C++ 逐行从文件中读取数据
C++ Reading data from a file line by line
我是编程新手,我有这个问题。我有这个文件,我正在打开
ifstream fin;
FILE * pFile;
pFile = fopen (fname,"r");
该文件每行有 3 个数据。第一个是整数,第二个是字母表,第三个是地址(如计算机内存地址)。如何将这些逐行提取为可以处理的 3 个变量,然后用下一行重复,依此类推。
您应该知道,与 C stdio 方法相比,有首选的C++方法来操作文件:
- 使用标准的预定义流:
std::ofstream
用于输出,std::ifstream
用于输入。
格式化/ - 未格式化的 I/O,例如
operator<<()
、operator>>()
、read()
和write()
。 - 用于操作提取数据的内存中 I/O。
对于这种特殊情况,您需要的是输入流功能以及格式化输入。格式化的输入将通过 operator>>()
完成。
但在开始之前,您必须实例化文件流。由于您使用的是输入,因此将使用std::ifstream
:
std::ifstream in("your/path.txt");
接下来要做的是创建三个变量,您将提取到流中的值。由于您事先知道类型,因此您需要的类型分别是整数、字符和字符串:
int num;
char letter;
std::string address;
接下来要做的是使用 operator>>()
从流中获取第一个有效值。它的工作方式是该函数分析右操作数的类型,并确定从文件流中提取的字符是否会在解析后创建有效值。当流遇到空格时,换行符或 EOF(文件结尾)字符(或与操作数类型的字符不匹配的字符)将停止提取。
IOStreams之所以强大,是因为它允许链接表达式。因此,您可以执行此操作:
in >> num >> letter >> address;
相当于:
in >> num;
in >> letter;
in >> address;
这就是这个简单案例所需的全部内容。在更复杂的情况下,可能需要循环和内存中 I/O 才能成功提取。
相关文章:
- 如何在ros2中从rosbag2读取数据
- OpenCV 和从 OutputArrays 或 (Mat) 读取数据
- 使用C++从磁卡读卡器MT188读取数据
- HDF5 简单读取数据集失败
- 嵌套结构,从由空行分隔的文件中读取数据
- 不要从输入队列套接字读取数据
- 从文件中读取数据,操作员>>
- 如何从excel文件中读取数据并存储到变量中?
- C++:从文件中读取x y数据会产生无限循环吗
- 无法通过FT232RL读取数据
- 如何从QNetworkReply读取数据?
- C++ 逐行从文件(包含空格)读取数据
- 通过显示一行星号来创建条形图,该条形图将读取数据的输入文件
- 我们可以从 TXT 文件中读取数据并使用 C 和 C++ 将其保存到 SQL 数据库吗?
- 从多个 tcp 连接读取数据
- 从文本文件中读取数据并删除所有换行符空格,并在 C++ 控制台中显示
- Qt TCP服务器不从客户端读取数据
- 累积从 C++11 中的文件中读取数据的整数
- 从 txt 文件中读取数据的最简单方法
- 从 txt 文件中读取数据的 Getline