【发布时间】:2017-04-17 05:01:39
【问题描述】:
我不太擅长 c++,但我需要对 csv 文件中的数据执行操作。
该文件采用天与分类的格式,例如,
revenues,profit,volume
481.21,144.36,30
449.13,134.74,28
544.11,163.23,34
368.93,110.68,23
所以第一行指定分类,然后从第二行开始,列出第 1 天、第 2 天、第 3 天 .... 等
.cpp .csv 和可执行程序在同一个目录下,但我怀疑它没有正确读取我的文件。
所以我做了一个简单的测试并编写了以下几行代码,只是为了看看它是否可以将数据打印为天数与分类,但它给我的任何地方都是 0
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
ifstream fin("data.csv");
int days = 1;
double revenues,profit,volume;
while (fin >> revenues >> profit >> volume){
O[1][days] = revenues;
O[2][days] = profit;
O[3][days] = volume;
days++;
}
for (int t = 1; t <= days; t++){
for (int i = 1; i <= 3; i++){
cout << O[i][t] << " ";
}
cout << endl;
}
【问题讨论】:
-
请尝试创建Minimal, Complete, and Verifiable Example。请记住,数组索引是基于 零 的(即三个元素的数组具有索引
0、1和2)。 -
您确定您的二进制文件也与您的 csv 文件位于同一文件夹中吗?并请说明您的错误。它是打开文件还是什么不起作用?
-
cpp文件在哪里或 二进制 程序在哪里并不重要,重要的是从哪里运行程序。 -
当您运行程序时,当前工作目录对于在“当前”目录中查找文件很重要。如果您使用的是 IDE,那么源文件的位置、可执行程序的位置和工作目录可能都不同。
-
您应该在打开文件后检查错误。
if(!fin.is_open()) std::cout << std::strerror(errno) << '\n';
标签: c++ file csv directory ifstream