为什么相同的代码有两个不同的结果,但并非总是交替的,而是有时由* array构成的字符串的长度为4,而不同的时间为长度6。最后2个字符是随机的。
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〜name:length:14
长度为4的输出:
长度:4
字符串缓冲区:tag1
行查询:tag1.tag2〜name:长度:14
INPUT相同:tag1.tag2〜name
答案 0 :(得分:1)
很可能linequery.copy
不会写一个终止的null,因此您依赖buffer
之后的下一个字符为NULL,这是不能保证的。您应该使用以下命令构建字符串:
string stringbuffer(buffer, dotpoint-lastdot);