比较std::stringstream的内容
Compare content of std::stringstream
我有两个std::stringstream
:ss1
和ss2
,它们作为参数提供给两个不同的函数,用数据填充它们。
我想检查一下这些函数是否编写了相同的内容。如何测试两个std::stringstream
的相等性?
alg1.print(ss1);
alg2.print(ss2);
if(ss1 != ss2) {
cout << "Content not identical!" << endl;
}
不起作用。将它们都转换为str()
是有效的,但是这似乎是无效的。一定有更好的方法吗?
我认为唯一的方法是使用.str()方法:
if (ss1.str() != ss2.str()) {
cout << "Content not identical!" << endl;
}
我不确定这是否特别快,但除非你在嵌入式上下文中,或者你每秒检查数百万次比较,否则这应该无关紧要。
在这种情况下使用str()
应该没有什么问题。如果您担心缓冲区会非常大,并且str()
会有大量的复制开销,那么也许您可以使用>>
运算符或其他成员函数之一,它允许您提取流中较小的块,并增量执行比较。也许你更喜欢它而不是一个单一的副本。
相关文章:
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- std::stringstream 返回字符 *
- std::stringstream::flush() 应该做什么吗?
- 静态 std::stringstream 的叮当整警告
- 为什么"std::stringstream::stringstream(std::string&&)"不存在?
- 为什么 {fmt} 比 std::stringstream 慢?
- C++命令末尾的 std::stringstream 空格
- 返回 std::stringstream - 编译失败
- C++ std::stringstream 运算符<< vs (构造函数)
- 流从STD :: Stringstream带有空间的流
- 用std :: stringstream inline代替字符
- 为什么我无法从 std::stringstream 二进制流中获得全精度(双精度、浮点数)
- C STD :: Stringstream操作优化
- 为什么GCC不允许我创建"内联静态std::stringstream"?
- What value should `std::stringstream::fail()` return after r
- 使用Boost Karma替换STD :: stringstream double到STD :: String Conv
- 从 std::stringstream 读取uint8_t为数字类型
- 重置std :: stringstream格式标志
- 如何将“char *”深度复制到std::stringstream
- C++ std::stringstream >> std::string 仅存储第一个条目?