不像“在stackoverflow上找不到答案”,而是“看不到我做错了什么”,差别很大!
Anywho,代码附在下面。它所做的是相当基本的,它接收一个用户创建的文本文件,并吐出一个已加密的文件。在这种情况下,用户告诉它在每个真实字符之间放置多少垃圾字符。(IE:如果我想用 1 个垃圾字符加密单词“Hello”,它看起来像“9H(eal~lo”)
我的问题是由于某种原因,它没有正确读取输入文件。我使用与之前解密时相同的设置来读取文件,但这次它正在读取垃圾字符,当我告诉它输出到文件时,它会在屏幕上打印出来,看起来像输出文件中没有任何内容(尽管它正在创建中,所以这意味着我已经正确地做了一些事情,请指点我!
代码:
string start;
char choice;
char letter;
int x;
int y;
int z;
char c;
string filename;
while(start == "enc")
{
x = 1;
y = 1;
cout << "How many garbage characters would you like between each correct character?: " ;
cin >> z;
cout << endl << "Please insert the name of the document you wish to encrypt, make sure you enter the name, and the file type (ie: filename.txt): " ;
cin >> filename;
ifstream infile(filename.c_str());
ofstream outfile("encrypted.txt", ios::out);
while(!infile.eof())
{
infile.get(letter);
while ((x - y) != z)
{
outfile << putchar(33 + rand() % 94);
x++;
}
while((x - y) == z)
{
outfile << letter;
y = 1;
x = 1;
}
}
outfile.close();
cout << endl << "Encryption complete...please return to directory of program, a new file named encrypted.txt will be there." << endl;
infile.close();
cout << "Do you wish to try again? Please press y then enter if yes (case sensitive).";
cin >> choice;
我在 while 循环的开头粘贴的是声明变量,这是一个更大的代码的一部分,它不仅会加密,还会解密,我把解密部分去掉了,因为它工作得很好,这就是我的部分我有一个问题。
提前感谢您的协助!
编辑:: 我正在使用visual C++ express 2008,它回击说根本没有错误,也没有任何警告。
重要编辑 原来它正在输出到文件!但是,它输出的是数字而不是 ascii 字符,并且它也输出了应该是的字母的垃圾字符。当它回到“infile.get(letter)”时,它没有得到一个新字符。所以现在看来问题有两个:1)打印数字而不是ascii字符。2)使用垃圾而不是它应该得到的实际字符。
已回答的问题 在“重要编辑”中找到了第二部分...如果您将某些东西命名为 test.txt...这意味着当您将其键入 C++ 程序时它实际上称为 test.txt.txt。只是表明是微小的、微小的、简单的细节会导致任何程序出错。感谢乔治·肖尔。您对输入文件位于错误位置的评论使我产生了尝试实际项目名称的想法。
感谢所有帮助解答的人!