【发布时间】:2017-04-01 03:27:14
【问题描述】:
我通过引用将整数文本文件传递给函数。它们由新行分隔。我想将它们推送到函数中的新数组中。我可以计算行数没有问题,并且我使用该变量来创建给定大小的数组,因此不需要向量。但是当我打印应该是我的数组的内容时,它就离题了。我是否需要再次将文件中的整数转换为 int 值(因为我正在从文本文件中读取,是否将它们作为字符串读取?)帮助?
C++ 代码:
void myFunction(ifstream& infile)
{
int NumberOfLines = 0;
int index;
string line;
//Count the number of lines in the file
if(infile.is_open())
{
while(getline(infile, line))
{
++NumberOfLines;
}
}
int arr[NumberOfLines];
//Put the numbers into an array
while(!infile.eof())
{
infile>>arr[NumberOfLines];
}
//Print the array
for(int i=0; i<NumberOfLines; i++)
{
cout<<arr[i]<<endl;
}
}
【问题讨论】:
-
“我使用该变量来创建给定大小的数组” 这在 C++ 中实际上是非法的。一些 C++ 编译器通过扩展允许它,但不推荐使用它。 A) 不适用于所有编译器。 B)这是溢出堆栈(或用于自动存储的任何内容)的一种非常简单的方法 3)它使
sizeof运算符绝对令人恐惧。使用vector。这种事情正是它的用途。 -
while(!infile.eof())是一个常见的错误。在这里阅读更多:stackoverflow.com/questions/5605125/… -
infile>>arr[NumberOfLines];写入越界(即使编译器支持这个数组,lat 有效索引为NumberOfLines-1