【发布时间】:2017-07-05 08:09:43
【问题描述】:
在以下代码中:
#include <iostream>
#include <string>
using namespace std;
int main() {
char buff[100];
_snprintf(buff, sizeof(buff), "%s %d", "Name",2); //snprintf incase of ideone
string buffAsStdStr = buff;
cout<<buffAsStdStr<<endl;
cout<<"len: "<<buffAsStdStr.length()<<endl;
cout<<sizeof(buffAsStdStr)<<endl;
return 0;
}
buffAsStdStr 中字符串的长度为 6,但我在 Visual Studio 2012 中运行时 sizeof 显示的值为 28,在 ideone 中为 32。 预期大小为 7,包括尾随 NULL 字符。
sizeof 运算符出现这种意外结果的原因是什么? 为什么结果会在 Visual Studio 和 ideone 之间发生变化?
【问题讨论】:
-
原因是你的预期错了:)
-
这个问题确实有道理,尤其是对于刚开始学习 C++ 的人。
-
@Mr.C64 是的,我是初学者。现在明白了,一清二楚。谢谢大家!