白色 space 插入 std::stringstream 失败

White space insertion in std::stringstream fails

我正在尝试以这种方式在 std::stringstream 中插入白色 space。

std::stringstream sstr;
sstr.str("");
sstr << " ";
sstr << 10;

然后将其设置为这样的标签

label->setString(sstr.str().c_str());

但它只给我 10 个, space 不包括在内。我跟着很多 link 解决了问题,但没有用。以下 link 建议使用 getline() 但在我的情况下我不能这样做:

stringstream doesn't accept white space?

我也尝试过使用 std::noskipws 但它也不起作用 :

sstr << std::noskipws << " ";

我们将不胜感激。

std::stringstream 在这样使用时不应删除空格。您确定修剪字符串和删除空格的不是标签对象吗?

尝试调试或打印出您的字符串,然后再将其设置为标签。

我认为你用错了:

string labelstr;
std::stringstream sstr;
sstr.str("");
sstr << " ";
sstr << 10;
ss >> noskipws >> labelstr;
label->setString(labelstr);

http://www.cplusplus.com/reference/ios/noskipws/

您可以使用 put 方法追加单个字符:

std::stringstream sstr;
sstr.str("");
sstr.put(' ');
sstr.put(10);

您的代码符合我的预期。这是一个可运行的示例:http://cpp.sh/8d6.

罪魁祸首一定是 setString 修剪了您的输入。或者可能是其他一些稍后读取字符串的函数。