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
我想在dbiet [sdb] .kitu中读取第一行字符串,并将其余行读入dbiet [sdb] .mota
示例:第1行= \ Dau xuyet phai
dbiet [sdb] .kitu =“\”和dbiet [sdb] .mota =“Dau xuyet phai”
我想逐行阅读,直到遇到下线字符('\ n')。这该怎么做。 对不起我的英语不好。谢谢。
答案 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
答案 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对象),buffer
为string/char
类型,您要复制行。