将文本文件读入字符串.C++ ifstream

bul*_*loa 5 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++;
          }
     }

}
Run Code Online (Sandbox Code Playgroud)

文本文件:"kitudacbiet.txt"

\ Dau xuyet phai
@ Dau @
# Dau #
$ Ky hieu $
( Dau mo ngoac
) Dau dong ngoac
Run Code Online (Sandbox Code Playgroud)

屏幕

我希望将第一行字符串读入dbiet [sdb] .kitu,将其余行读入dbiet [sdb] .mota

示例:第1行=\Dau xuyet phai

dbiet [sdb] .kitu ="\"和dbiet [sdb] .mota ="Dau xuyet phai"

我想逐行阅读,直到遇到下线字符('\n').这该怎么做.对不起我的英语不好.谢谢

111*_*111 27

要从文件中读取整行到字符串,请使用std::getline如下:

 std::ifstream file("my_file");
 std::string temp;
 std::getline(file, temp);
Run Code Online (Sandbox Code Playgroud)

您可以循环执行此操作直到文件结尾,如下所示:

 std::ifstream file("my_file");
 std::string temp;
 while(std::getline(file, temp)) {
      //Do with temp
 }
Run Code Online (Sandbox Code Playgroud)

参考

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

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

  • 我尝试使用您的代码,但应用程序只读取最后一行 (2认同)

Ben*_*ley 5

看起来您正在尝试解析每一行。另一个答案向您展示了如何getline在循环中使用来分隔每一行。您将需要的另一个工具是istringstream, 分离每个令牌。

std::string line;
while(std::getline(file, line))
{
    std::istringstream iss(line);
    std::string token;
    while (iss >> token)
    {
        // do something with token
    }
}
Run Code Online (Sandbox Code Playgroud)