这是一个相当简单的问题,但非常令人困惑。
string R = "hhhh" ;
cout<< sizeof( R )<<endl;
Run Code Online (Sandbox Code Playgroud)
输出:
4
Run Code Online (Sandbox Code Playgroud)
变化:
字符串 R = "hhuuuuuuhh" ; cout<< sizeof( R )<
输出 2:
4
Run Code Online (Sandbox Code Playgroud)
出了什么问题?我应该改用 char 数组吗?
想想sizeof
被编译时评估。它评估类型的大小,而不是内容的大小。你甚至可以写sizeof(std::string)
,这将是完全相同的同sizeof(foo)
任何std::string
实例 foo
。
要计算 a 中的字符数std::string
,请使用size()
。
如果你有一个字符数组,说char c[6]
那么类型的c
是一个数组的6char
秒。因此sizeof(c)
(在编译时已知)将是 6,因为 C++ 标准将单个的大小定义char
为 1。