程序在c++中的for循环之后结束



为什么这个程序只运行到第一个for循环,然后停止

它不会为循环运行第二个,也会跳过系统("暂停"(。有人能解释一下我的代码出了什么问题吗?我想制作两个字符串数组:长度为abstrgs1trgs2,然后接受用户对数组中每个元素的输入。这是我的代码:

#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;
}

首先,您在编译时使用的是大小不恒定的静态数组string strgs1[a-1], strgs2[b-1];。这是个坏主意。我建议使用std::vector。

第二点,用于数组的大小不好。例如,第一个数组的大小是a-1,您尝试在其中插入a字符串(从0到a-1(。

假设您输入a=3。阵列的大小为a-1=2。循环迭代i=0,i=1,i=2。但这是3个元素,而你的向量只有2个大小!

此外,请使用std::vector。某些编译器允许使用大小不恒定的数组,但它是不可移植的。

最新更新