web-dev-qa-db-ja.com

テキストファイルを文字列に読み込みます。 C ++ ifstream

void docDB(){
     int sdb = 0;
     ifstream dacb("kitudacbiet.txt");
     if(!dacb.is_open())
         cout<<"Deo doc dc file"<<endl;
     else{
          while(!dacb.eof()){
               dacb>>dbiet[sdb].kitu;
               dacb>>dbiet[sdb].mota;
               //getline(dacb,dbiet[sdb].mota);
               /*
               string a="";
               while((dacb>>a)!= '\n'){
                //strcat(dbiet[sdb].mota,a);
                dbiet[sdb].mota+=a;
               }
               */
               sdb++;
          }
     }

}

テキストファイル:「kitudacbiet.txt」

\ Dau xuyet phai
@ Dau @
# Dau #
$ Ky hieu $
( Dau mo ngoac
) Dau dong ngoac

Screen

行の最初の文字列をdbiet [sdb] .kituに、残りの行をdbiet [sdb] .motaに読み取りたい

例:1行目=\Dau xuyet phai

dbiet [sdb] .kitu = "\"およびdbiet [sdb] .mota = "Dau xuyet phai"

ダウンライン文字( '\ n')に出会うまで、1行ずつ読みたいのですが。これを行う方法。申し訳ありませんが私の英語は下手です。ありがとう

5
bulubuloa

行全体をファイルから文字列に読み取るには、次のようにstd::getlineを使用します。

 std::ifstream file("my_file");
 std::string temp;
 std::getline(file, temp);

次のようにファイルの終わりまでループでこれを行うことができます:

 std::ifstream file("my_file");
 std::string temp;
 while(std::getline(file, temp)) {
      //Do with temp
 }

参考文献

http://en.cppreference.com/w/cpp/string/basic_string/getline

http://en.cppreference.com/w/cpp/string/basic_string

27
111111

各行を解析しようとしているようです。別の回答で、ループでgetlineを使用して各行を区切る方法を示しました。必要なもう1つのツールは、各トークンを分離するistringstreamです。

std::string line;
while(std::getline(file, line))
{
    std::istringstream iss(line);
    std::string token;
    while (iss >> token)
    {
        // do something with token
    }
}
4

getline(fin, buffer, '\n')
ここで、finは開かれたファイル(ifstreamオブジェクト)であり、bufferstring/char行をコピーする場所を入力します。

1
Taimur Amjad