gpt4 book ai didi

C++ getline() 在读取包含\0 的字符串流时表现异常

转载 作者:行者123 更新时间:2023-11-30 02:43:22 24 4
gpt4 key购买 nike

<分区>

我正在尝试从使用\0 分隔数据片段并使用\n 分隔行的套接字读取大缓冲区。

我认为 getline() 是获取每一行的简单方法,但它的行为很奇怪。

我在 getline() 中使用\n 作为分隔符。

string line;
string test1 = "aaa,123\nbbb\nccc,456\n";
stringstream ss1(test1);
while(std::getline(ss1, line, '\n')) {
cout << line << endl;
}
// outputs:
// aaa,123
// bbb
// ccc,456

string test2 = "aaa\0123\0\nbbb\0\nccc\0456\0\n";
stringstream ss2(test2);
while(std::getline(ss2, line, '\n')) {
cout << line << endl;
}
// outputs:
// aaa
// 3

为什么在 test2 中会发生这种情况? 3来自哪里?我必须删除\0 才能完成这项工作吗?当我执行套接字 recv() 时,是否有更简单/更好的方法来标记缓冲区中的字符串?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com