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

时间:2012-11-25 14:27:08

标签: 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')。这该怎么做。 对不起我的英语不好。谢谢。

3 个答案:

答案 0 :(得分:27)

要将文件中的整行读入字符串,请使用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

答案 1 :(得分:4)

看起来你正试图解析每一行。您已经通过另一个答案显示了如何在循环中使用getline来分隔每一行。您想要的另一个工具是istringstream,以分隔每个令牌。

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

答案 2 :(得分:1)

getline(fin, buffer, '\n')
其中fin打开文件(ifstream对象),bufferstring/char类型,您要复制行。