2017-10-13 242 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个项目。 –