如何确定中间包含""的 std::string 的长度?



我正在编写一个从套接字接收输入的c++应用程序。这个输入是一个原始数据字符串,因此,它的主体中包含大量的""。

我的问题是,我如何确定它的长度/大小而不停止在""s,所以我将能够读取完整的套接字响应?响应本身是148长,但是size()返回2。

size()返回字符串的实际长度,并且不考虑以空字节结束字符串。你得到大小为2的原因是因为有不同的方法来设置字符串的值,其中一些认为空字节是字符串结束符。因此,您错误地将字符串的值设置为两个字符的字符串,而不是将其设置为保存完整的响应数据,并且size()准确地反映了该错误。

解决方案是使用不考虑空字节的方法初始化或设置字符串:

char buffer[] = "abcdefg";
std::string s(buffer, 8);
std::cout << s.size() << 'n'; // outputs "8"
std::string s2(buffer);
std::cout << s2.size() << 'n'; // outputs "4"

相关内容

  • 没有找到相关文章

最新更新