*char数组到字符串(两次运行代码和两个不同的结果)

*char array to string (two times run code and two different result )

本文关键字:结果 两个 代码 两次 数组 char 字符串 运行      更新时间:2023-10-16

为什么相同的代码有两个不同的结果,并不总是是替代的,有时由 *数组制成的字符串长度:4和不同的时间将是长度:6。最后两个字符是随机的。

string linequery;
getline(cin, linequery);
char  * buffer =  new char [4];
size_t lengthh = linequery.copy(buffer, 4, 0);
string stringbuffer(buffer);
cout << " length :" << stringbuffer.length() << endl;
cout << " string buffer : " << stringbuffer << endl;
referencetree.push_back(stringbuffer);
delete []  buffer;

长度6:

输出

长度:6

字符串缓冲区:tag1

线查询:tag1.tag2〜名称:长度:14


持续长度4:

输出

长度:4

字符串缓冲区:tag1

线查询:tag1.tag2〜名称:长度:14


输入是相同的:tag1.tag2〜名称

linequery.copy可能不会编写终止空的零,因此您依靠buffer是无法保证的null后的下一个字符。您应该用:

构建字符串
string stringbuffer(buffer, dotpoint-lastdot);