缓冲区大小已更改

buffer size changed

本文关键字:缓冲区      更新时间:2023-10-16

我正在套接字之间进行简单的通信,这是我的C++代码

while(1)
{
    string buffer = "23,45n";
    const char* foo = buffer.c_str();
    cout << "size of buffer is " << sizeof(buffer)<<endl;
    send (s, foo, sizeof(buffer), 0);
}

奇怪的是拳头迭代,缓冲区的大小正如预期的那样是 5,但自从第二次迭代以此类推后,大小急剧跃升至 32。 知道为什么吗?谢谢。顺便说一下,增加的尺寸来自前导空格。

sizeof运算符返回对象的大小(以字节为单位)。 它返回容器类型的长度。 您需要使用 std::string::length()std::string::size() 来确定字符串的长度。

我想你误解了第一次迭代的 5:它一定来自其他地方。 sizeof(buffer)是在编译时计算出来的 - 它是 std::string 的大小,所以你应该在每次迭代中看到 32。

如果要查找字符串的长度,请改用buffer.size()

sizeof(buffer)告诉您std::string对象的大小,这与存储在其中的字符数无关(顺便说一下,在您的示例中是 7,而不是 5)。