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')に出会うまで、1行ずつ読みたいのですが。これを行う方法。申し訳ありませんが私の英語は下手です。ありがとう
行全体をファイルから文字列に読み取るには、次のように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
各行を解析しようとしているようです。別の回答で、ループで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
}
}
getline(fin, buffer, '\n')
ここで、fin
は開かれたファイル(ifstreamオブジェクト)であり、buffer
はstring/char
行をコピーする場所を入力します。