2017-10-13 58 views
1

我正在尋找將int 1-9的for循環轉換爲字符串數組,查看了周圍我發現了一些代碼來將int轉換爲字符串,但是當我嘗試過把它放在一個for循環中,並創建一個字符串數組我已經得到錯誤。將int轉換爲字符串數組

我一直在考慮一個斷言失敗時,我想這

#include<iostream> 
#include <sstream> 
#include <string> 
using namespace std; 
int main() 
{ 
    string str[9]; 

    for (int a = 1; a <= 9; a++) { 
     stringstream ss; 
     ss << a; 
     str [a] = ss.str(); 
     cout << str[a]; 
    } 

    return 0; 
} 

,當我試圖此程序崩潰保持

#include<iostream> 
#include <sstream> 
#include <string> 
using namespace std; 
int main() 
{ 
    ostringstream str1 [9]; 

    for (int num = 1; num <= 9; num++) { 
     str1[num]<< num; 
     string geek = str1[num].str(); 
     cout << geek << endl; 

    } 

    return 0; 

} 

任何幫助將非常感激。

+1

'str [9]'超出界限。 – aschepler

回答

3

C++使用基於0的索引。這意味着string str[9]支持索引0->8而不是1->9。在此循環中:

for (int num = 1; num <= 9; num++) { 

您試圖從1->9索引。您應該將其更改爲:

for (int num = 0; num < 9; num++) { 

要遍歷整個數組。或者更好的使用:

std::vector<std::string> str(9); // For dynamic storage duration 
std::array<std::string, 9> str; // For automatic storage duration 
int num = 1; 
for (auto& currentString : str) { 
     currentStr << num++ 
} 
0

我認爲這是飛機墜毀的原因:

for (int num = 1; num <= 9; num++) 

只是改變運營商是 「< 9」,而不是 「< = 9」:

for (int num = 1; num < 9; num++) 
+0

我很高興我可以幫助,祝你好運,快樂的編碼:) –

+1

這是誤導,OP不包括10項,他們正在計數9,但9項是從1-> 9包括而不是0-> 8包括在內。當您更改爲num 1 - > num <9時,您只能迭代8個項目。 –