私は、次のコードを実行すると、foobar_fname
がfoobar_fname
ときgetline
実行の内容によって上書きされます:なぜstd :: getlineはファイル名を含むchar配列を上書きしますか?
foobar_fname=/home/user/fname
と
/home/user/fname
は「シンプル・テキスト・コンテンツを」が含まれている場合、出力は次のようになり、例えば
ostringstream st_foobar_fname;
st_foobar_fname << foostr << BAR_CONST << barstr;
const char *foobar_fname = (st_foobar_fname.str()).c_str();
ifstream foobar_file(foobar_fname);
debug("Reading '%s'", foobar_fname);
string foobar_def = "";
if (getline(foobar_file, foobar_def)) {
debug("'%s' reported message '%s'", foobar_fname, foobar_def.c_str());
} else {
error("Unable to read '%s'", foobar_fname);
}
Reading '/home/user/fname'
'simple-text-content' reported message 'simple-text-content'
/home/user/fname
が存在しない(およびgetline
が失敗した)場合は、出力が正しい:
Reading '/home/user/fname'
Unable to read '/home/user/fname'
どこが間違っていますか?
(これは新しい依存関係を導入したくない古いコードなので、C++ 11、ブーストなどは実行可能なソリューションではありません)。
あなたはとても親切にして[MCVE]を使用することを提供してもらえ、ここで[スターターのために何か](http://coliru.stacked-crooked.com/a/d4727423864d880e)です。 (または少なくともイドーンを試して、そこに標準入力を提供する方が簡単です) –