这是1个老掉牙的话题,但是你略加不注意就会出错.
最近在写1个可以跨平台打印的程序,就遇到这个问题,故记之.共勉!
用 char 数组初始化string
#include <string>
using std::string;
using std::cout;
int main(int argc,const char * argv[])
{
char chArray[] = {'m','a','r','k'};
cout << "array size = " << sizeof(chArray)/sizeof(char) << endl;
cout << chArray << endl;
string str(chArray);
cout << "str = " << str << " and str's size = " << str.length() << endl;
}
针对上面的代码,不同的编译器输出结果不1致,并且具有随机性.
在 mac 平台下,输出结果
array size = 4
mark310367277_377
str = mark310367277_377 and str's size = 10
但是有时候输出结果又是这样的
array size = 4
mark
str = mark and str's size = 5
很明显,string 的 size 不对.#include <string>
using std::string;
using std::cout;
int main(int argc,'k','