如何忽略文件处理中的换行符

时间:2016-05-24 23:30:46

标签: c++ c++11

有没有办法在阅读文本文件时跳过换行符?

例如,假设我有两个文本文件,input.textoutput.text

我的input.text文件如下所示:

welcome to stackoverflow<line break here>
another sentence
.
.
.

我从input.text读取第一行,并将该行的某些部分写入output.text

但是当我在换行符后读到第二行时,我的第一行会在文本文件中丢失。

我该怎么办?

要阅读文件我使用此代码:

ifstream input.open("input.text");
while(input)
{
    getline(input,string);
}

并写

ofstream output;
output<<string;`

1 个答案:

答案 0 :(得分:1)

您的问题与回车键无关,也与您从文件中读取/写入的方式有关。您的代码显然如下所示:

#include <iostream>
#include <fstream>
#include <string>

int main() {
     std::string string;
     std::ifstream input("input.text");

     while (input) { // bad
         std::getline(input, string);
     }

     std::ofstream output("output.text");
     output << string;
}

&#34; while&#34;循环覆盖每行的string。如果您有3行文本,则在while循环结束时,string将仅包含输入文件的最后一行。

您可能想做的更像是:

#include <iostream>
#include <fstream>
#include <string>

int main() {
     std::string string;
     std::ifstream input("input.text");
     std::ofstream output("output.text");

     while (std::getline(input, string)) {
         output << string;
     }
}

这是一个使用cin和cout的简单版本:

#include <iostream>
#include <fstream>
#include <string>

int main() {
     std::string string;
     while (std::getline(std::cin, string)) {
         std::cout << string;
     }
}

如上所述,&#34; \ n&#34;在每一行的末尾都会丢失:http://ideone.com/0FhEyj您可以通过将输出行更改为

来解决此问题
          std::cout << string << "\n";