よりもむしろあなたは私はあなたがすなわち、要求していない質問に答えるつもりです、尋ねた質問に答える:
Q:私ドン場合、私は、ファイルのすべての行を読み込むことができますどのようにそこにはいくつの行があるのか知りませんか?
A:std::vector<>
を使用してください。
あなたは数字のすべてをで読みたい場合は、関係なく、ペアリングの:
// all code fragments untested. typos are possible
int i;
std::vector<int> all_of_the_values;
while(filein >> i)
all_of_the_values.push_back(i);
あなたは異なるデータ構造に交互に数字を入れて、数字の全てに読み込みたい場合:
int i, j;
std::vector<int> first_values;
std::vector<int> second_values;
while(filein >> i >> j) {
first_values.push_back(i);
second_values.push_back(j);
あなたがデータ構造のいくつかの並べ替えに格納、数字のすべてをで読みたい場合:
int i, j;
struct S {int i; int j;};
std::vector<S> values;
while(filein >> i >> j) {
S s = {i, j};
values.push_back(s);
}
最後に、あなたがファイルを一度にラインを読みたい場合は、それぞれの行から最初の2つの数値を維持する各ラインの残りの部分を破棄し、それらをユーザー定義のデータ構造を格納:
std::vector<MyClass> v;
std::string sline;
while(std::getline(filein, sline)) {
std::istringstream isline(sline);
int i, j;
if(isline >> i >> j) {
values.push_back(MyClass(i, j));
}
}
脇に:決してループ条件で
eof()
または
good()
を使用しないでください。あなたのケースでそうであるように、そうすることはほとんど常にバグのコードを生成します。代わりに、私が上で行ったように、条件で入力関数を呼び出すことを好む。
あなたは(私の記憶が正しければ)seekgを使用することができるはずです:あなたはのようなものを使用することができ、上記
point
クラスを使用して(例えば)ので、データの読み出しが成功したことを確認したいです。あなたはただベクトルを使用して考えましたか? – Corbin「データを入力する」とは、値をこのファイルに書き戻すことを意味していますが、適切な権限で開いた出力ストリームが必要になります。 – AJG85
@Corbin - 'seekg'は' eofbit'をクリアしません。 –