私はいくつかの数字を含むファイルをすべて1行に持っています。私はこのファイルを読んで、この行を文字列変数に入れたいと思います。 1行しか含まれていないので、getline()
メソッドは1回だけ有効です。C++のstd :: stringは空ですが、 ' 0'でいっぱいです
しかし、そうではありません。それは2回働く。私は最初に私のstring_descriptorが数字を含んでいることに気が付きましたが(それはokeyですが)、getlineの後に別の行を入れ、今回は空ですが、デバッガを見ると文字列に\ O \のようなものが10回もたくさん含まれています。
\O\O\O\O\O\O\O\O\O\O\O\O\O\O\O\
そして、私はいくつかの処理をやった後ので、それは私を気にしているため私のアプリのcrashsているの。
それでは、私がやっていることは、次のとおりです。
fs.open (desc.c_str(), std::ios::in);
string line;
if(!fs.is_open())
{
cout<<"\n Cannot open the text.txt file";
}
else
{
std::string string_descriptor;
while (!fs.eof())
{
getline(fs , line);
if (line != "" && line.find_first_not_of(' ') != std::string::npos && !line.empty())
{
string_descriptor = line;
std::cout << "String descriptor : " << string_descriptor << std::endl;
}
}
}
だから、それがなぜ起こりましたか?特に私はそれをどのように扱うことができますか?私は、次の操作を行って、それを処理するために試みたが、それはまだ同じです:
if (line != "" && line.find_first_not_of(' ') != std::string::npos && !line.empty())
は私が私のファイルをチェックし、ファイルの末尾にスペースがない、これまでのところ、私は知っています。
は
より簡素見ることができますが、ループ '' EOF()を使用しないでください。https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-間違っている – Galik
ファイルにヌル文字が含まれていますか? – stark
これまでの数字はありませんでした。私は – lilouch