在C ++中复制文件之间的换行符

时间:2018-04-01 19:16:33

标签: c++ c++11

我是这个论坛的新手以及一般的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();

3 个答案:

答案 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表明递增的值在某种程度上很重要。但这是一个小问题。