Ofstream返回垃圾。 Cout工作......为什么不流动?

时间:2013-05-16 20:51:10

标签: c++ fstream cout stringstream ostream

所以我正在尝试设计一个输入文件的程序,然后通过这些行读取并获取每一行并将有关它的信息输出到一个新文件。

我把它全部放下......除了!我的所有.txt文件都填充了垃圾而不是它们应该填充的内容。

我无法理解。如果我将字符串输入到ofstream中,那么正确的东西会在屏幕上打印出来。

fstream lineOutFile;
string newFileName;
stringstream linefile;

linefile << lineCt;
linefile >> newFileName;

newFileName += ".txt";

lineOutFile.open(newFileName.c_str());

if(!lineOutFile)
{
    cerr << "Can't open output file.\n";
}

stringstream iss;
iss << "The corrected 5' x 3' complement of line " << lineCt <<
    " is as follows - \n\n" << finalSeq << "\n\n\n\n" <<
    "This line of DNA sequence is made up of " << cgContent <<
    " C and G neucleotides.\n\n" << "It contains " << polyTCount <<
    " Poly-T strings of more than 4 consecutive neucleotides. They are as follows. - \n" <<
    polyTString << "\n\n There are " << cpgCount <<
    " CpG sites. The locations are as follows - \n" << cpgString;

string storage;
storage = iss.str();
cout << storage;
lineOutFile << storage;
lineOutFile.close();
lineCt++;

}

我得到了“⁥潣牲捥整⁤✵砠㌠‧”&lt;&lt;我的.txt文件中有这种疯狂。

当我在之前发出相同的刺痛时,我得到了正确的答案!

为什么我的.txt文件是垃圾?

2 个答案:

答案 0 :(得分:1)

为什么使用fstream代替ofstream

fstream的默认设置是打开现有文件。 ofstream的默认值是以空文件开头。无论文件中已有什么,都可能导致编辑器使用错误的编码来解释数据。

答案 1 :(得分:0)

尝试运行

LANG=C your_program

在编辑器中关闭编码识别功能。更好 - 使用cat程序查看您的txt文件。