我是这个论坛的新手以及一般的C ++,我制作的程序可以从一个文件中导入文本,稍微更改一下,然后将更改后的文本移到另一个文件中。无论如何,我没有在改变文本方面遇到太多问题,但是我尝试将新版本覆盖的方式没有用,我不知道为什么。程序导入了文本,但没有导入换行符。谢谢。我真的可以使用一些帮助。
char fileChars;
ifstream codedMessage;
ofstream decodedMessage;
cout << "Decoding File" << endl;
codedMessage.open("secretMessage.txt");
decodedMessage.open("decipheredMessage.txt");
if (codedMessage.fail() ) {
cerr << "Error..." << endl;
exit(1);
}
while (!codedMessage.eof()){
codedMessage >> fileChars;
if (fileChars == '\n') {
decodedMessage << "\n";
} else if (fileChars == '~') {
decodedMessage << ' ';
} else {
decodedMessage << ++fileChars;
}
}
cout << "Closing Files." << endl;
codedMessage.close();
decodedMessage.close();
答案 0 :(得分:1)
问题在于您尝试从char
获取单istream
的方式。尝试使用fileChars = codedMessage.get();
代替codedMessage >> fileChars;
。
答案 1 :(得分:0)
这可能有效
ifstream codedMessage;
ofstream decodedMessage;
cout << "Decoding File" << endl;
codedMessage.open("secretMessage.txt");
decodedMessage.open("decipheredMessage.txt");
char my_character ;
while (!codedMessage.eof() )
{
codedMessage.get(my_character);
cout << my_character;
if (my_character == '\n'){
decodedMessage << '\n';
}
}
else if (my_character == '~') {
decodedMessage << ' ';
}
else {
decodedMessage << ++my_character;
}
}
cout << "Closing Files." << endl;
codedMessage.close();
decodedMessage.close();
答案 2 :(得分:0)
一次使用getline
读取一行,并一次写出一行字符的文本,然后换行:
std::string line;
while (std::getline(codedFile, line)) {
for (auto ch : line) {
if (ch == '~')
decodedFile << ' ';
else
decodedFile << ch + 1;
}
decodedFile << '\n';
}
我使用的是ch + 1
而不是++ch
;我更喜欢这样,因为递增ch
表明递增的值在某种程度上很重要。但这是一个小问题。