c++ - 字符串流输出比较

标签 c++ stringstream stdstring

我想将 stringstream 的输出与一些字符串进行比较。

问题是当我在 stringstream 上使用 fill 和 width 时,我无法将结果字符串与预加载的字符串进行比较。

std::stringstream sstr;
sstr.fill(' ');
sstr.width(4);
sstr <<  4 <<  std::endl;
if("   4" == sstr.str()){
 std::cout <<  "Equal" <<  std::endl;
}

这不相等。我有根据的猜测是宽度以某种方式使用某种标志或其他类型的指示符来替换字符串中的一堆空格。但我不确定,也没有在谷歌上找到任何有用的东西。有谁知道为什么我不能比较那个(sstream.str() 和目标字符串)?

目标是测试 stringstream(我的组件的核心)将在控制台上打印什么。

最佳答案

您还在字符串中插入了一个 std::endl。这将向字符串中添加一个换行符。

从输出中移除 std::endl

关于c++ - 字符串流输出比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40887820/

相关文章:

c++ - 使用复制构造函数创建对象(三类简单规则)会产生运行时错误

c++ - 使用 libc++ 和 libstdc++ 的 void* 类型的字符串流行为差异

c++ - C++ Stringstream初始化

c++ - std::string move 构造函数是否真的 move ?

C++ - 尝试使用字符串函数来反转输入字符串

Xcode 中的 C++ 链接器错误

c++ - 我如何要求 GCC 使用不同的标准库?

c++ - 如何使用 write with stringstream?

c++ - C++中任意长度字符串的字符串替换

c++ - 用另一个字符序列替换 C++ std::string 中的字符/字符序列