0

C ++ ifstream get line change getline output from char to string

私はテキストファイルを手に入れました..それで私はそれを読んで私は次のようなことをします

char data[50];
readFile.open(filename.c_str());

while(readFile.good())
{
readFile.getline(data,50,',');

cout << data << endl;

}

私の質問は、変数名データによってサイズ50の文字を作成する代わりに、次のような文字列にgetlineを取得できますか?

string myData;
readFile.getline(myData,',');

私のテキストファイルはこんな感じです

Line2D、[3,2] Line3D、[7,2,3]

私が試したところ、コンパイラは言いました。

getline(std :: string&、char)に一致する関数がありません

したがって、区切り文字で区切り、文字ではなく文字列に値を割り当てることは可能ですか。

更新:

使用する

while (std::getline(readFile, line))
{
    std::cout << line << std::endl;
}

ITは行ごとに読み取りますが、文字列をいくつかの区切り文字に分割したいのですが、元々charを使用する場合は、3番目の要素として区切り文字を指定します。

readFile.getline(data、50、' ');

上記の区切り文字のコンマで/explodeを壊した場合、文字列をどのように処理しますか。行ごとに

4

1 に答える 1

6

使用std::getline()

std::string line;
while (std::getline(readFile, line, ','))
{
    std::cout << line << std::endl;
}

読み取り操作の結果を常にすぐに確認してください。そうしないと、投稿されたコードの場合と同様に、コードは失敗した読み取りの結果を処理しようとします。

別の区切り文字を指定することは可能ですが、getline()2つの無効な行を1つの有効な行として誤って処理する可能性があります。各行を完全に取得してから、行を分割することをお勧めします。行を分割するための便利なユーティリティはですboost::split()

于 2012-11-13T09:35:56.243 に答える