这段代码来自《Data Structures and Problem Solving in C++》(2003)一书
void getInts( vector<int> & array )
{
int itemsRead = 0;
int inputVal;
cout << "Enter any number of integers: ";
while( cin >> inputVal )
{
if( itemsRead == array.size( ) )
array.resize( array.size( ) * 2 + 1 ) ;
array[ itemsRead++ ] = inputVal;
}
array.resize( itemsRead ) ;
}
int main()
{
vector<int> array;
getInts( array ) ;
for( int i = 0; i < array.size( ) ; i++ )
cout << array[ i ] << endl;
return 0;
}
当我在控制台中输入一个数字并按 Enter 键时,程序什么也不做。之后,如果我输入 CTRL+Z 作为 EOF,程序会给我我输入的数字。由于我正在调整向量的大小并将 inputValue 赋予它的每个部分,因此我希望看到许多数字而不是一个,就像在我键入 CTRL+Z 之前程序生成的一样多,但这不会发生。毕竟,矢量的大小似乎是 1。这是什么原因?
另外我的另一个问题是,当我使用 while 循环作为
while( cin >> inputVal )
在我输入 CTRL+Z 之前,程序是否可以正常工作。或者输入 0 会做同样的事情?