如何在文件处理中忽略换行符
How to ignore line breaks in file handling
>有没有办法在读取文本文件时跳过换行符?
例如,假设我有两个文本文件,input.text
和 output.text
。
我的input.text
文件如下所示:
欢迎来到 StackOverflow<换行符>另一句话...换行符>
我从input.text
中阅读了第一行,并将该行的一部分写到output.text
.
但是当我阅读换行符后的第二行时,我的第一行在文本文件中丢失了。
我该怎么办?
要读取文件,我使用以下代码:
ifstream input.open("input.text");
while(input)
{
getline(input,string);
}
并写
ofstream output;
output<<string;`
您的问题与 Enter 键无关,而与您如何从文件中读取/写入有关。您的代码显然如下所示:
#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;
}
"while"循环覆盖每行的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;
}
}
如前所述,每行末尾的""丢失:http://ideone.com/0FhEyj 您可以通过将输出行更改为
std::cout << string << "n";
相关文章:
- 如何防止clang格式在流运算符调用之间添加换行符<<
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- 在 Stream C++ 文本之前有一个额外的换行符
- 流:CSV 文件中的换行符
- 如何在三元条件运算符中添加换行符和连接? :在 C++ 中
- Clang-格式:在多行语句之后的换行符上打开大括号
- 在输出流中插入换行符
- 防止控制台在通道字符(在 c++ 中)中输入空格(即空格、制表符和换行符)
- QProcess::readAllStandardOutput() 和换行符
- 如果有换行符,clang 格式不会附加大括号
- 提取后返回换行符的C++istream.get()
- 如何在出现换行符之前将多个整数作为输入?
- 正则表达式 获取两个换行符之间的文本
- 包含换行符分隔的单词的文件和C++中这些单词的字符串向量的大小是否相同?
- 在字符串中输入换行符
- 从文本文件中读取数据并删除所有换行符空格,并在 C++ 控制台中显示
- 使用 fgets() 从键盘读取时从以前的输入读取换行符
- 如何在文件处理中忽略换行符
- 在 C++ 中,get() 和 getline() 对换行符的处理方式不同
- 用cin处理空格并返回(换行符)