我有一个 .csv 文件,它有 3 行和 5 列,值为 0、1、2、3、50 或 100。我将它从 excel 工作表保存到 .csv 文件。我正在尝试使用 C++ 读取 .csv 文件并根据最后三列值将 .csv 文件中的前两列值输出到文本文件中。我假设 .csv 文件看起来像
1,1,值,值,值
1,2,值,值,值
1,3,值,值,值
但是我找不到很多关于 .csv 文件格式的文档。
我查看了从 .csv 文件中的字段读取值?并使用了那里的一些代码。
这是我的代码:
#include <iostream>
#include <fstream>
using namespace std;
char separator;
int test_var;
struct Spaxel {
int array1;
int array2;
int red;
int blue_o2;
int blue_o3;
};
Spaxel whole_list [3];
int main()
{
// Reading in the file
ifstream myfile("sample.csv");
Spaxel data;
int n = 0;
cout << data.array1<< endl;
myfile >> data.array1; // using as a test to see if it is working
cout << data.array1<< endl;
while (myfile >> data.array1)
{
// Storing the 5 variable and getting rid of commas
cout<<"here?"<< endl;
// Skip the separator, e.g. comma (',')
myfile >> separator;
// Read in next value.
myfile >> data.array2;
// Skip the separator
myfile >> separator;
// Read in next value.
myfile >> data.red;
// Skip the separator, e.g. comma (',')
myfile >> separator;
// Read in next value.
myfile >> data.blue_o2;
// Skip the separator
myfile >> separator;
// Read in next value.
myfile >> data.blue_o3;
// Ignore the newline, as it is still in the buffer.
myfile.ignore(10000, '\n');
// Storing values in an array to be printed out later into another file
whole_list[n] = data;
cout << whole_list[n].red << endl;
n++;
}
myfile.close();
// Putting contents of whole_list in an output file
//whole_list[0].red = whole_list[0].array1 = whole_list[0].array2 = 1; this was a test and it didn't work
ofstream output("sample_out.txt");
for (int n=0; n<3; n++) {
if (whole_list[n].red == 1)
output << whole_list[n].array1 <<","<< whole_list[n].array2<< endl;
}
return 0;
}
当我在 Xcode 中运行它时,它会打印三个 0(从 cout << data.array1<< endl; 和 cout << data.array1<< endl; 在 main() 的开头和从 return 0)但确实不输出任何文件。显然 .csv 文件没有被正确读取,输出文件也没有被正确写入。有什么建议么?
谢谢你的时间!