c++ - 为什么只有 32 个字节的 std::string 可以包含一个 62 个字节的字符串文字?
问题描述
我正在阅读的书发出警告:
std::string 类型和字符串文字不是同一类型,可能会引起混淆。
然而,这本书没有任何附带的例子。
有人可以举一些例子来说明它们在哪些情况下不同吗?
我也做了一些调查。这是代码:
#include <iostream>
#include <string>
int main() {
std::string str("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
std::cout << sizeof(str) << std::endl; //1
std::cout << sizeof(std::string) << std::endl; //2
std::cout << sizeof("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") << std::endl; //3
std::cout << sizeof(L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") << std::endl; //4
return 0;
}
输出结果如下:
32
32
62
248
我可以理解结果。
但有一件事我不明白。
为什么只有 32 个字节的 std::string 可以包含一个 62 个字节的字符串文字?
解决方案
推荐阅读
- if-statement - 为什么我的程序无法识别这个“if”语句?
- python - 为什么 opencv 没有完全清理上一帧中绘制的内容?
- python - Sphinx 仅包含包含文档字符串的类和函数
- javascript - 为每个字符设置字母间距 Html Css
- angular - 通过 Gridster2 减小拖动项目的大小
- javascript - Basic-ftp 451-传输中止
- android - 无法将数据添加到android中的房间数据库
- action - Google Actions - Apple 设备上未经验证的用户
- javascript - D3.JS 读取 CSV 并选择行
- php - 如何模拟在函数中创建的类(新运算符)?