数组越来越多

时间:2014-09-13 07:53:30

标签: c++ arrays

char name[4][20];
int count=0;
cout<<"Enter 4 name at most , one name per line:\n";
while(cin.getline(name[count++],20))
 ;
--count;

(其余的代码用于打印,如果你需要在最后看到它)

当我输入超过4的名字时,它仍会打印这些名字,但这怎么可能呢? 因为第一个维度是4,所以如何得到超过4个

printing part of code:

for(int i=0; i<count; i++)
{
        cout<<i<<"="<<name[i]<<endl;
}
system("pause");
}

2 个答案:

答案 0 :(得分:1)

您需要告诉while()循环何时停止。

试试这个:

char name[4][20];
int count=0;
cout<<"Enter 4 name at most , one name per line:\n";
while(count < 4 && cin.getline(name[count++],20))
    ;

答案 1 :(得分:1)

如果我弄错了,你会问“为什么如果阵列是4我可以适合5?”。 与Pascal不同,在运行时检查数组边界,C ++不会这样做。

想一想。数组只是稍后添加了偏移量的一些指针。
假设你有一个包含5个整数的数组,你可以这样做

int a[5];
a[3] = 3;
a[6] = 4;

没有什么是错的,因为在第一个作业中,语句等于a+12而第二个a+24。你只是递增指针,除非你不打扰操作系统,你可以继续并可能覆盖其他一些数据。
因此,如果跨越数组边界,C ++将不太可能说些什么。 这意味着你必须总是以某种方式知道数组有多大,在你的情况下只需添加到循环:

while(count < 4 && cin.getline(name[count++], 20));