std::stringstream中的空白插入失败



我正试图以这种方式在std::stringstream中插入空白。

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

然后将其设置为类似的标签

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

但它只给了我10个,空间不包括在内。我关注了许多链接来解决问题,但并没有用。以下链接建议使用getline(),但在我的情况下我不能这样做:

字符串流不会';不接受空白?

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

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

任何帮助都将不胜感激。

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

在将字符串设置为标签之前,请尝试调试或打印出字符串。

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

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

我认为你用错了:

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

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

您的代码对我来说是预期的。下面是一个可运行的示例:http://cpp.sh/8d6.

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

最新更新