2015-03-03 59 views
1

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

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

,然后将其设置为一样,

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

的标签,但它只是给了我10,不包括空间。我遵循很多链接来解决问题,但没用。下面的链接建议使用函数getline(),但在我的情况下,我不能这样做:

stringstream doesn't accept white space?

我还试图用的std :: noskipws,但它也不能工作:

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

任何帮助将不胜感激。

+0

您是否试图将10写入字符串:sstr <<“10”; – hasan83 2015-03-03 13:17:06

+0

Perhps尝试做'sstr <<“10”;' – 2015-03-03 13:18:19

+0

我想要它作为整数,它们不可插入? – Itkrux 2015-03-03 13:19:22

回答

1

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

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

+0

你是对的@Tafuri,** label-> setString(“10”)**正在修剪空间,但仍不明白为什么! – Itkrux 2015-03-05 06:33:02

0

我觉得你错了使用它:

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

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

+0

这似乎更像是一个链接问题的答案? – Tafuri 2015-03-03 13:20:48

+0

也应该在这里工作。 – Fred 2015-03-03 13:21:25

+0

当我们从stringstream中提取的时候,插入时我们必须使用>>。 – Itkrux 2015-03-03 13:21:51

1

您可以使用put方法追加一个单个字符:如预期的我

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

你的代码工作。这是一个可运行的示例:http://cpp.sh/8d6

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