値が 0、1、2、3、50、または 100 の 3 行 5 列の .csv ファイルがあります。Excel シートから .csv ファイルに保存しました。C++ を使用して .csv ファイルを読み込み、最後の 3 つの列の値に基づいて、.csv ファイルの最初の 2 つの列の値をテキスト ファイルに出力しようとしています。私は.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 で実行すると、3 つの 0 が出力されます (cout << data.array1<< endl; および cout << data.array1<< endl; から、main() の先頭および return 0 から)。ファイルを出力しません。どうやら .csv ファイルが正しく読み込まれておらず、出力ファイルが正しく書き込まれていないようです。助言がありますか?
御時間ありがとうございます!