2015-03-03 57 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修剪您的輸入。或者可能有其他函數稍後讀取字符串。