它不会运行第二个 for 循环,并且还会跳过 system(“ pause”)。谁能解释我的代码出了什么问题? 我想制作两个字符串数组:长度为 a 和 b 的 strgs1 和 strgs2 ,然后将用户输入的每个数组元素。 这是我的代码:
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
string strgs1[a-1], strgs2[b-1];
for(int i = 0;i < a;i++){
cin>>strgs1[i];
}
for(int j = 0;j < b;j++){
cin>>strgs2[j];
}
system("pause");
return 0;
}
答案 0 :(得分:2)
首先,您正在使用静态数组string strgs1[a-1], strgs2[b-1];
,其大小在编译时是非恒定的。那是个坏主意。我建议改用std :: vector。
第二点,用于数组的大小不好。例如,第一个数组的大小为a-1
,您尝试在其中插入a
个字符串(从0到a-1)。
答案 1 :(得分:0)
假设您输入a = 3。数组的大小为a-1 = 2。循环迭代i = 0,i = 1,i = 2。但这是3个元素,而向量只有2个大小!
此外,使用std :: vector。某些编译器允许使用非恒定大小的数组,但不能移植。