ファイルから行を読み取り、それを int に変換しようとしています。何らかの理由atoi()
で (文字列を整数に変換) 引数として a を受け入れませんstd::string
(文字列 vs c-strings vs char 配列の問題でしょうか?) -atoi()
このテキスト ファイルを解析できるようにするにはどうすればよいですか? (そこから多くのintを引き出す予定です)。
コード:
int main()
{
string line;
// string filename = "data.txt";
// ifstream file(filename)
ifstream file("data.txt");
while (file.good())
{
getline(file, line);
int columns = atoi(line);
}
file.close();
cout << "Done" << endl;
}
問題を引き起こしている行は次のとおりです。
int columns = atoi(line);
エラーが発生します:
'std::string'
エラー: 引数 '1'を'const char*'
'intatop(const char*)
'に変換できません
atoi を適切に動作させるにはどうすればよいですか?
編集:すべてありがとう、それは動作します!新しいコード:
int main()
{
string line;
//string filename = "data.txt";
//ifstream file (filename)
ifstream file ("data.txt");
while ( getline (file,line) )
{
cout << line << endl;
int columns = atoi(line.c_str());
cout << "columns: " << columns << endl;
columns++;
columns++;
cout << "columns after adding: " << columns << endl;
}
file.close();
cout << "Done" << endl;
}
また、なぜ string filename = "data.txt"; なのか疑問に思っています。ifstream ファイル (ファイル名) は失敗しますが、
ifstream file("data.txt");
動作しますか?(最終的にはコマンドラインからファイル名を読み取るので、文字列リテラルではないようにする必要があります)