我正试图以这种方式在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
修剪您的输入。或者可能是稍后读取字符串的其他函数。