有没有办法在阅读文本文件时跳过换行符?
例如,假设我有两个文本文件,input.text
和output.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;`
答案 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";