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

时间:2018-11-11 15:07:18

标签: c++ arrays string for-loop

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

它不会运行第二个 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;
}

2 个答案:

答案 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。某些编译器允许使用非恒定大小的数组,但不能移植。