タイトルから、ファイルから読み込み、文字を2次元配列にスペースで保存しようとしていますが、ファイルのdo whileループと最後の文字にはまっています。どのようにこれを修正するための任意の提案?私はeofbitを使うことを考えましたが、私はそれを理解できませんでした。それはその仕事をしなかった。それはちょうどファイルの最後の文字にぶら下がっているようです。あなたはそれをチェックするため、第2の条件が検証されることはありませんので、この条件が常に真であるファイルの末尾に、あなたのアドバイスC++は2次元配列にファイルを読み込みます
char ch[100][100];
int row_count =0;
int col_count = 0;
int col[100];
char temp;
bool exit = false;
ifstream infile("data.txt");
if(infile.is_open())
{
while(!infile.eof())
{
do
{
infile.get(temp);
char[row_count][col_count] = temp;
col_count++;
}while(temp != '\n' || !infile.eof());
col[row_count] = col_count;
row_count++;
col_count= 0;
}
}
for(int i = 0; i <= 2; i++)
{
for(int j=0; i <= col[i]; j++)
{
cout << ch[i][j];
}
cout << endl;
}
return 0;
}
(infile.eof()!)中に使用しないでくださいここを参照してください:http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-間違って試してみてください(infile.get(temp))。同様の条件の2つのネストループもなぜですか?ちょうどif文を入れてください –
ストリームの['getline'](http://en.cppreference.com/w/cpp/io/basic_istream/getline)メソッド – WhozCraig
でこれはかなり単純になります。あなたは一番です。 –