读取C++文本文件
read text file in C++
我有一个关于在C++中读取文本文件时如何处理"n"
或"rn"
等的问题。当我执行以下操作序列时,存在此问题:
int k;
f>>k;
string line;
getline(f,line);
对于具有类似内容的输入文件
1
abc
我必须放一个f.get()
才能在f>>k
之后读出结尾"n"
.如果我有f.get()
,我什至必须做两次"rn"
.
如果我>>
与getline
混合,阅读这样的文件的优雅方式是什么?
谢谢。
编辑另外,我想知道是否有任何方便的方法可以自动检测给定文件具有行尾字符"n"
或"rn"
。
你需要摆
弄一点才能>>
和getline
愉快地一起工作。 通常,使用 >>
运算符从流中读取某些内容不会丢弃任何后续空格(换行符)。
解决此问题的常用方法是在>>
之后使用 istream::ignore
函数 - 告诉它丢弃每个字符,直到并包括下一个换行符。 (仅当您真的想丢弃每个字符直到换行符时才有用)。
例如
#include <iostream>
#include <string>
#include <limits>
int main()
{
int n;
std::string s;
std::cout << "type a number: ";
std::cin >> n;
std::cin.ignore( std::numeric_limits<std::streamsize>::max(), 'n' );
std::cout << "type a string: ";
std::getline( std::cin, s );
std::cout << s << " " << n << std::endl;
}
编辑(我知道您在问题中提到了文件,但希望不用说 std::cin 与 ifstream 完全可以互换)
一种完全不同的方法是使用 tr
(假设您使用 Linux)预处理数据文件以删除r
,然后使用 getline()
。
相关文章:
- 文本文件中的单词链表
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何使用 c++ 实现并发文件/文本编辑?
- 我需要转换一些代码,以便它适用于输入和输出文件文本
- 通过套接字发送二进制文件.文本文件有效,其他文件无效
- 将大型数据文件拆分为多个小文件(文本格式)
- 如何读取输入文件(文本文件)并将输入验证为有效整数
- 从文本文件/文本流中读取Q字符串错误
- 从文本文件(文本解析器)C++中读取行和列的逻辑
- 如何将*.css文件(文本文件)的内容与附加信息存储在新文件中?
- 关于内存映射文件和使用大文件文本编辑器
- 如何在读取文件文本时跳过"n"
- 使用libzip从.zip获取文件(文本除外)