这是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
得到这类结果,简直要 fuck...
但是有时候输出结果又是这样的
array size = 4
mark
str = mark and str's size = 5
很明显, string 的 size 不对.
思考1下,原来是少了 ' ', 修改上面代码
#include <string>
using std::string;
using std::cout;
int main(int argc, const char * argv[])
{
char chArray[] = {'m', 'a', 'r', 'k', '