比较 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::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()
会有大量的复制开销,也许您可以使用 >>
运算符或其他允许您的成员函数之一提取较小的流块,并逐步执行比较。也许您更喜欢它而不是单个整体副本。