整数のテキストファイルを関数に参照渡しします。それらは新しい行で区切られています。私は関数の新しい配列にそれらをプッシュしたいです。私は問題のない行の数を数えることができ、その変数を使って与えられたサイズの配列を作成するので、ベクトルは必要ありません。しかし、私は何を私の配列の内容にする必要がありますそれを印刷するときにオフです。ファイルから整数を再度int値に変換する必要がありますか(テキストファイルから読み込んでいるので、文字列として読み込んでいますか?)ヘルプ?私の入力ファイルの番号が配列C++に入っていないのはなぜですか?
C++コード:あなたが最初の行をカウントするために、ファイルをスキャン
void myFunction(ifstream& infile)
{
int NumberOfLines = 0;
int index;
string line;
//Count the number of lines in the file
if(infile.is_open())
{
while(getline(infile, line))
{
++NumberOfLines;
}
}
int arr[NumberOfLines];
//Put the numbers into an array
while(!infile.eof())
{
infile>>arr[NumberOfLines];
}
//Print the array
for(int i=0; i<NumberOfLines; i++)
{
cout<<arr[i]<<endl;
}
}
「私が作成し、その変数を使用し
再度ファイルを読むためには、あなたが使用して、先頭に位置インジケータをリセットする必要がありますそのサイズの配列 "これは実際にはC++では不正です。それはいくつかのC++コンパイラによって拡張が許されていますが、使用は推奨されません。 A)はすべてのコンパイラで動作しません。 B)これはあなたのスタックをオーバーフローさせる本当に簡単な方法です(または自動ストレージに使われるもの)3) 'sizeof'演算子から絶対的な恐怖を外します。 'vector'を使います。このようなことはまさにそれが何のためのものなのです。 – user4581301
while(!infile.eof()) 'はよくあるバグです。もっと詳しく読む:http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong – user4581301
'infile >> arr [NumberOfLines];'境界から書き出しますコンパイラがこの配列をサポートしている場合、有効なインデックスは 'NumberOfLines-1'です。 –