始终使变量地方尽可能。 C++允许您在循环内定义循环变量
for(int i = 0; i < SIZE; i++)
{
...
}
// i no longer in scope
以便它们在循环结束时超出范围,这与本地获得的范围相同。
这样做,就会发现你正在使用i
访问数组循环后,在这一点i
具有价值SIZE
,导致访问越界的。 (记住,数组中有索引0..SIZE-1
)
我不知道在你的程序
cout << fruity[i] << endl;
最后一行应该做的事,但如果你想输出数组的conetent(如其他答案建议),你确实需要另一个循环。
其他更小的点:
我们真的不知道你用的是什么串类,因为您省略了std::
前缀。 (对于您使用的标准库中的所有其他标识符也是如此。)I disapprove of that。
数组索引的正确类型是std::size_t
。
的std::endl
机械手将插入一个'\n'
到输出流中并冲洗流的缓冲区。在您的交互式控制台程序中,这通常不会造成任何伤害。但请记住,过早刷新缓冲区可能会大大减慢程序的速度。 (我曾见过一个案例是一个程序将大量数据写入文件流中,几个字节的涓流由于此而减慢了一个数量级。)在这种情况下,手动刷新输出流#s缓冲区从来没有真正的必要。 (当然,你想你会提示您从输入流中读取之前出现,但是这是由std::cout
被捆绑到std::cin
默认情况下实现的,使得std::cout
冲洗每当程序试图从std::cin
阅读。)
程序,我会写出来,应该是这样的:
// Beware, brain-compiled code ahead!
#include <string>
#include <iostream>
int main()
{
const std::size_t size = 5;
std::string fruity[size];
std::cout << "Enter the names of five kinds of fruit:" << '\n';
for(std::size_t i = 0; i < size; ++i)
{
std::cout << "Enter Name of Fruit" << '\n';
std::getline(std::cin, fruity[i]);
}
for(std::size_t i = 0; i < size; ++i)
{
std::cout << fruity[i] << `\n`;
}
return 0;
}
来源
2011-09-20 05:35:34
sbi
什么是“坏过剩” ......?暴饮暴食? –
因为我试图自我教导 – hart929