我有一个 Linux 文件描述符(来自套接字),我想读取一行。
如何在 C++ 中做到这一点?
如果您正在从 TCP 套接字读取数据,您无法假设何时到达行尾。
因此你需要这样的东西:
std::string line;
char buf[1024];
int n = 0;
while(n = read(fd, buf, 1024))
{
const int pos = std::find(buf, buf + n, '\n')
if(pos != std::string::npos)
{
if (pos < 1024-1 && buf[pos + 1] == '\n')
break;
}
line += buf;
}
line += buf;
假设您使用“\n\n”作为分隔符。 (我没有测试该代码片段;-))
在 UDP 套接字上,那就是另一个故事了。发射器可以发送包含整行的数据包。接收方保证将 paquet 作为一个单元接收。如果它收到它,因为 UDP 当然不如 TCP 可靠。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)