C++如何读取txt文件_C++文件流读取数据到数组教程【实例】

阿强姑娘_1419

阿强姑娘_1419

2026-02-12

775人浏览

原创

最安全做法是用std::ifstream配合std::getline读入std::vector;读数字优先用>>但需检查failbit;解析CSV等格式应逐行读再用stringstream分割;务必处理编码、空行、溢出及eof误用等边界问题。

c++如何读取txt文件_c++文件流读取数据到数组教程【实例】

用 std::ifstream 逐行读取文本文件到数组是可行的,但“直接读到数组”这个说法容易误导——C++ 没有内置机制把整份文件自动塞进原生数组(比如 int arr[100]),必须自己控制内存、类型转换和边界。真正可靠的做法是先读到 std::vector 或动态分配内存,再按需转存。

用 std::ifstream 读取每行字符串到 std::vector<:string>

这是最安全、最常用的起点。适用于纯文本、每行一条记录(如姓名、路径、配置项)的场景。

  • 确保文件存在且路径正确,否则 is_open() 返回 false
  • 用 std::getline() 而非 >>,避免空格截断和换行符残留
  • 不要预先定义固定大小数组,std::vector 自动扩容更稳妥
std::ifstream file("data.txt");
std::vector<:string> lines;
std::string line;
while (std::getline(file, line)) {
    lines.push_back(line);
}
file.close();</:string>

从文件读数字到 std::vector(跳过非数字内容)

如果 data.txt 是类似 12 34\n56\n78 90 100 的格式,用流提取操作符 >> 更自然,但它会跳过所有空白符(包括换行),无法按行区分。

C++14
C++14

C++14 对 C++11 的修正与增强版本,适合旧系统维护和较老工具链兼容。

下载
  • operator>> 自动跳过前导空白,并在遇到非数字字符时停止,适合连续数字流
  • 若某行含混合内容(如 ID: 42),需先读字符串再用 std::stoi 提取数字
  • 务必检查 failbit,防止因非法字符导致后续读取静默失败
std::ifstream file("data.txt");
std::vector<int> numbers;
int x;
while (file >> x) {
    numbers.push_back(x);
}
if (file.fail() && !file.eof()) {
    // 可能遇到了非数字字符,需要清错并跳过
    file.clear();
    file.ignore(std::numeric_limits<:streamsize>::max(), '\n');
}</:streamsize></int>

读取固定格式数据(如 CSV 数字)到二维 std::vector

当文件是规则分隔的数值表(例如每行三个整数,用空格或逗号分隔),推荐逐行读 + 字符串分割,比依赖 >> 更可控。

  • 用 std::getline() 读整行,再用 std::stringstream 解析该行,可精确控制每行字段数
  • 对逗号分隔,可用 std::getline(ss, token, ',');空格分隔则继续用 >>
  • 避免把整份文件一次性读入 char[] 再手动解析——易越界、难调试、无类型安全
std::ifstream file("data.txt");
std::vector<:vector>> matrix;
std::string line;
while (std::getline(file, line)) {
    std::stringstream ss(line);
    std::vector<int> row;
    int val;
    while (ss >> val) {
        row.push_back(val);
    }
    if (!row.empty()) matrix.push_back(row);
}</int></:vector>

真正麻烦的地方不在“怎么读”,而在“读错了怎么办”。比如文件编码不是 UTF-8(Windows 记事本默认 ANSI)、末尾多一个空行、某数字超出 int 范围却没检查溢出、或者用 .eof() 做循环条件导致最后一行重复处理——这些细节不显眼,但会让程序在特定文件上突然崩溃或结果错乱。

C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

c++

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

6759

3

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

2023.09.14

14346

6

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.14

1685

5

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

2023.12.21

3957

3

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

2024.03.01

6141

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1798

5

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2864

5

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

2023.10.24

6184

49

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

2023.11.24

5969

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C++ Core Guidelines
C++ Core Guidelines

共0课时 | 0人学习

C++ Reference
C++ Reference

共0课时 | 0人学习

C++ 官方标准说明
C++ 官方标准说明

共0课时 | 0人学习