2014-02-13 85 views
-2

我在C++中有一個deque,我想推回從1到17的數字。我編寫了以下代碼: string Result;在C++中推倒數中的數字

string Result;   

ostringstream convert; 

for(int i=1; i< 18; i++){ 

    convert >> i;  
    Result = convert.str(); 
    temp.push_back(Result); 
} 

cout <<"temp at_"<< temp.at(16) << endl; 

的問題是,temp.at(16)打印與cout: 1234567891011121314151617not 17,怎麼可能增加每次只是目前我?

編輯:上面的代碼工作:

string Result;   
ostringstream convert; 
for(int i=1; i< 18; i++){ 

      convert.str(std::string()); 
    convert << i;  
     Result = convert.str(); 
    temp.push_back(Result); 
} 

cout <<"temp at_"<< temp.at(16) << endl; 
+2

那麼,什麼是'Result',以及'convert'的類型是什麼? – juanchopanza

+2

你可能會先在'push_back'之前加上'std :: cout << Result <<'\ n';',這樣你就可以看到你真的在推動什麼......問題將出現在'convert' ,而不是'deque'。 –

+0

不分配轉換:'convert = i;',使用:'convert << i;' – marcinj

回答

5

它看起來像你沒有清除converter

1234567891011121314151617 

都是你的整數你迭代

假設,轉換爲:

std::stringstream convert; 

您可以使用每次使用前清除:

convert.str(std::string()); 
convert << i; 
+0

是的,謝謝,它有道理,它工作正常! –

2

我懷疑問題出在convert << i。如果它符合我的想法,那麼你會以字符串的方式將數字附加到該變量上,並且它會一直積累,直到它收到您收到的可笑的長字符串。

嘗試convert = i;

1

的< <操作者將所有「我是到流。所以最後你會得到所有的數字喲