ファイルを列単位で読み込もうとしています。主な機能は、私のファイルは列のすべての値を表示する必要があります。 私はベクトルでやろうとしています。テキストファイルを列で読み込み、すべての列値の配列を表示します。
void search(){
const int COLUMNS = 4;
vector< vector <int> > data;
string filename = "bla.txt";
ifstream ifile(filename.c_str());
if (ifile.is_open()) {
int num;
vector <int> numbers_in_line;
while (ifile >> num) {
numbers_in_line.push_back(num);
if (numbers_in_line.size() == COLUMNS) {
data.push_back(numbers_in_line);
numbers_in_line.clear();
}
}
}
else {
cerr << "There was an error opening the input file!\n";
exit(1);
}
//now get the column from the 2d vector:
vector <int> column;
int col = 2;//example: the 2nd column
for (int i = 0; i < data.size(); ++i) {
column.push_back(data[i][col - 1]);
cout << column[i] << endl;
}
ifile.close();
}
私のファイルのようになります。
John 1990 1.90 1
Peter 1980 1.88 0
...
このコードはコンパイルが、私は、コンソールに示す任意の値を取得しておりません。最後の行をデバッグしようとするとキャッシュされませんので、何もしないと思いますか?
あなたは 'ベクトル'の中に 'John'と' Peter'を格納しようとしていますが、ifstreamの失敗ビットがセットされています。 'data.size()'が0に等しいので、何も出力されません。 –
user
どのようにマルチタイプのベクトルにするには? – NotsoPr0
@ NotsoPr0:これはまったく異なる質問です。したがって、ここで新しい質問をするか、既存の質問を検索する必要があります。ヒント: 'boost :: any'のようなものが役に立ちます。 –