我尝试在此函数中读取2D数组中csv文件的数据,但打印数组时输出为零,问题是什么?文件有5行和500列
void readFilesToReadings() {
int row = 5;
int col = 10;
int myArray[row][col];
string fileName, BasefileName = "C:/Users/hhh/Desktop/frac/Z500.csv"
//Opening the file
ifstream inputfile(fileName);
if (!inputfile.is_open())
cout<<"Error opening file" ;
//Defining the loop for getting input from the file
for (int r = 0; r < row; r++) //Outer loop for rows
{
for (int c = 0; c < col; c++) //inner loop for columns
{
inputfile >> myArray[r][c]; //Take input from file and put into myArray
}
}
for (int r = 0; r < row; r++)
{
for (int c = 0; c < col; c++)
{
cout << myArray[r][c] << "\t";
}
cout<<endl;
}
}
Update1:这是user20716902答案的输出
2条答案
按热度按时间scyqe7ek1#
这里是固定的代码,你只是设置BasefileName(这是从来没有使用,fileName没有设置,所以当然你的文件打开失败。(我已经测试了我自己的csv和他们现在的工作):
}
xqkwcwgp2#
在C++中,从文件中阅读内容并不难,但有一个模式是你必须遵循的。最简单的方法是为自己创建一个小函数来实现这个模式。
我使用了模板,这样您就可以向它传递任何大小的数组,但是如果需要,您可以很容易地在全局名称空间中硬编码数组类型(大小)。
无论哪种方式,使用它从文件填充数组都非常简单:
(同样,如果直接使用数组类型:
正如您所看到的,
myReadingsArray
实际上是一个数组,这一点就不那么清楚了......所以我个人倾向于避免这种类型别名。)最后,你应该避免使用绝对路径作为你的文件名。把数据和你的可执行文件放在同一个目录,或者它的一个子目录。更好的是,让用户提供一个文件名:
创建函数来做一些事情,离应用C++的全部功能来为你序列化对象只有一步之遥,稍后你会了解到这一点。