我需要帮助搞清楚为什么输出文件中有一些额外的符号。无论在原始文本文件中放置什么,总是有10个。 非常感谢你的时间!
"plain.txt"
Mus velit,tincidunt vitae in enim id egestas eget。
Nibh libero dignissim vitae elit。 Quisque eleifend blandit pharetra quisque。
Ridiculus ac quam nisl suspendisse。 Litora。
Nostra扭伤urna cursus fermentum nec magnis lobortis posuere ultricies phasellus ultricies tellus mattis massa sagittis。
Porta dolor aliquam iaculis。
Litora。 Maecenas nulla donec laoreet坐。
认真的临时生活习惯,普通的普通生物 hendrerit。Quam magna nibh sociosqu libero mi Laoreet pede vel。
Suspendisse eu。 Laoreet potential enim,ad。
Turpis augue viverra hendrerit praesent tristique velit。
Dapibus发表了一份简历purus nisi。
Pharetra molestie inceptos volutpat。 Egestas bibendum ad ipsum diam。 的Lorem。
"coded.txt"
QYW $ $ zipmx0 $ xmrgmhyrx $ zmxei先生$ $ irmq MH $ $ ikiwxew ikix2 Rmfl $ pmfivs $ hmkrmwwmq $ zmxei $ ipmx2 $ Uymwuyi $ ipimjirh $ fperhmx $ tlevixve $ uymwuyi2 Vmhmgypyw $如$ uyeq $ rmwp $ wywtirhmwwi2 $ Pmxsve2 Tsvxe $ hspsv $ epmuyeq $ megypmw2 Pmxsve2 $ Qeigirew $ ryppe $ hsrig $ pesviix $ wmx2 Gsrkyi $ xiqtsv $ lefmxewwi0 $ typzmrev $ tyvyw $ IVEX $ tvsmr $ $阿尔西$ lirhvivmx lirhvivmx2 Uyeq $ qekre $ rmfl $ wsgmswuy $ pmfivs $ QM $ Pesviix $ tihi $ ZIP2 Wywtirhmwwi $ IY2 $ Pesviix $ tsxirxm $ irmq0 $ EH2 Xyvtmw $ eykyi $ zmzivve $ lirhvivmx $ tveiwirx $ xvmwxmuyi $ zipmx2 Hetmfyw $ YX $ E $ xsvxsv $ zmxei $ tyvyw $ rmwm2 Tlevixve $ qspiwxmi $ mrgitxsw $ zspyxtex2 $ Ikiwxew $ fmfirhyq $诶$ mtwyq $ hmeq2 $ Psviq2Qyw $ zipmx0 $ xmrgmhyrx $ zmxei $ $先生$ irmq MH $ ikiwxew $ ikix2 Rmfl $ pmfivs $ hmkrmwwmq $ zmxei $ ipmx2 $ Uymwuyi $ ipimjirh $ fperhmx $ tlevixve $ uymwuyi2 Vmhmgypyw $如$ uyeq $ rmwp $ wywtirhmwwi2 $ Pmxsve2 Tsvxe $ hspsv $ epmuyeq $ megypmw2 Pmxsve2 $ Qeigirew $ ryppe $ hsrig $ pesviix $ wmx2 Gsrkyi $ xiqtsv $ lefmxewwi0 $ typzmrev $ tyvyw $ IVEX $ tvsmr $ $阿尔西$ lirhvivmx lirhvivmx2 Uyeq $ qekre $ rmfl $ wsgmswuy $ pmfivs $ QM $ Pesviix $ tihi $ ZIP2 Wywtirhmwwi $ IY2 $ Pesviix $ tsxirxm $ irmq0 $ EH2 Xyvtmw $ eykyi $ zmzivve $ lirhvivmx $ tveiwirx $ xvmwxmuyi $ zipmx2 Hetmfyw $ YX $ E $ xsvxsv $ zmxei $ tyvyw $ rmwm2 Tlevixve $ qspiwxmi $ mrgitxsw $ zspyxtex2 $ Ikiwxew $ fmfirhyq $ eh $ mtwyq $ hmeq2 $ Psviq2 ムムムムムムムムムム 2号后面的这些符号不应该在这里。
#include <iostream>
#include <fstream>
using namespace std;
const char FILEIN[] = "plain.txt";
const char FILEOUT[] = "coded.txt";
int main()
{
ifstream inFile;
ofstream outFile;
inFile.open(FILEIN);
outFile.open(FILEOUT);
if (inFile.is_open() && outFile.is_open())
{
inFile.seekg (0, inFile.end);
int size = inFile.tellg();
inFile.seekg (0, inFile.beg);
cout << size << endl;
char * block = new char[size];
inFile.read(block, size);
for (int i = 0; i < size; ++i)
if (block[i] != '\n') block[i] += 4;
outFile.write(block, size);
cout << endl << "File encrypted" << endl;
inFile.close(); outFile.close();
}
else cout << "Unable to access files" << endl;
return 0;
}
答案 0 :(得分:0)
使用ifstream::read
读取文件内容时,需要以二进制模式打开文件。同样,当您使用ofstream::write
写入文件时,也需要以二进制模式打开文件。
inFile.open(FILEIN, std::ios::bin);
outFile.open(FILEOUT, std::ios::bin);
这对于处理各种平台处理换行符的不同方式是必要的。
size
返回一个数字,其中包含每个换行符的两个字符。但是,当读取数据时,两个字符仅作为一个字符读入。如果您有一行文件,例如:
test
size
的值为6.数据准备就绪后,第五个字符为'\n'
,第六个字符为垃圾。当写出来时,输出将有那个垃圾。