为什么stringstream会产生奇怪的值?
Why does stringstream yields strange values?
本文关键字:stringstream 为什么 更新时间:2023-10-16
所以,我试图在我的程序中使用stringstream,以获得一些格式化的字符串(特别是因为我需要将数字转换为字符串)。
问题是,我的程序崩溃了,当我用Visual Studio调试它时,在我的Spy窗口中,我看到我的stringstream的字符串缓冲区产生(当试图添加"帧率"时):
" FramerateIIIIIIIIIIIIIIIIIIIIIIIyyyy««««««««我þþ"
代码:std::stringstream s;
s << "Framerate";
我的代码将崩溃的时刻,我试图获得相关的字符串…我找不到任何解释,也不是我的代码有问题…
编辑:原来这些字符不是问题,并且stringstream返回str()
的预期字符串。
stringstream
的内部缓冲区不需要null终止。但是,当您在stringstream
对象上调用str()
时,您将得到一个以空结尾的字符串。你崩溃的原因很可能在别处。
在visual studio 2015版本14.0.25431.01 Update 3中,看起来std::strstream不确保'str()'返回的数据以空终止。
我做了一个测试:
`std::strstream s;
s << "the cow jumped over the moon!";
return s.str();`
,得到:the cow jumped over the moon!===zzzz
在返回之前添加s.write("", 1);
修复了我的输出,但非常不愉快。
相关文章:
- 使用 "stringstream " 将字符串转换为整数
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- 使用StringStream将字符串转换为int
- 从 std::stringstream 读取uint8_t为数字类型
- 如何使用Stringstream将字符串转换为C 的双打
- 使用std :: stringstream将boost :: int64_t转换为字符串
- 错误 C2678:二进制">>":找不到采用类型为"std::stringstream "的左操作数的运算符
- 使用Qt将二进制std::stringstream内容转换为base64(并返回)
- 左操作数的类型为 'std::stringstream (__cdecl *)(std::string)'
- 使用 Stringstream 将字符串解析为指针数组时出现分段错误错误
- 使用Stringstream将C++十六进制转换为Int
- 使用ostringstream或stringstream将C++Int转换为字符串
- 将stringstream解析为字符串和双精度对象
- 使用"ifstream"、"stringstream"和"rdbuf()"将文件内容读取为字符串时如何检查I/O错误?
- 无法将 std::stringstream<char> 转换为常量字符*
- Stringstream将unsigned long转换为带逗号的格式化数字字符串
- 将uint8 vector类型的元素转换为stringstream类型
- 试图使用stringstream将字符串转换为整型
- 使用std::stringstream转换为字符串在空格处失败
- 为多个转换清除和重用stringstream