将int转换为字符串数组
问题描述:
我正在寻找将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;
}
任何帮助将非常感激。
答
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++
}
答
我认为这是飞机坠毁的原因:
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
'str [9]'超出界限。 – aschepler