C++学习笔记——输入、输出和文件

这篇具有很好参考价值的文章主要介绍了C++学习笔记——输入、输出和文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C++学习笔记——输入、输出和文件,C++的学习笔记,c++,学习,笔记

目录

一、标准输入输出

2.1下面是它们的基本用法

解释

二、格式化输入输出

2.2下面是一个示例

解释

三、文件读写

3.3下面是一个文件读写的示例

解释

四、异常处理和错误检测

4.1下面是一个示例

解释

五、一个实例代码

5.1如何读取 CSV 文件,并计算每一列的平均值


上一篇文章链接:

C++ 是一门功能强大的编程语言,它提供了很多工具来实现各种编程任务。在本文中,我们将介绍 C++ 中的三个重要概念:友元、嵌套类和异常。

C++学习笔记——友元、嵌套类、异常-CSDN博客文章浏览阅读20次。友元、嵌套类和异常是 C++ 中三个重要的概念,它们可以提高程序的灵活性、封装性和健壮性。但是,需要注意的是过度使用它们会破坏程序的封装性、增加代码的复杂度和影响程序的性能。因此,在编写程序时,应根据实际情况选择适当的编程技术来提高程序的可读性、可维护性和可靠性。https://blog.csdn.net/m0_62338174/article/details/135573148?spm=1001.2014.3001.5502

 C++学习笔记——输入、输出和文件,C++的学习笔记,c++,学习,笔记

    C++ 是一种功能强大的编程语言,它提供了丰富的输入、输出和文件操作功能,使得开发者能够方便地与用户交互、读写数据以及进行文件处理。本篇博客将详细介绍 C++ 的输入输出流(iostream)库,并给出代码示例和详细解释,帮助读者深入理解 C++ 中的输入输出和文件操作。

一、标准输入输出

标准输入流(cin)和标准输出流(cout)是 C++ 中常用的标准输入输出方式。

2.1下面是它们的基本用法

#include <iostream>

int main() {
    int age;
    std::cout << "请输入您的年龄:";
    std::cin >> age;
    std::cout << "您的年龄是:" << age << std::endl;

    return 0;
}

解释

std::cin 用于从标准输入流读取数据。

std::cout 用于向标准输出流输出数据。

>> 运算符用于从输入流中提取数据。

<< 运算符用于将数据插入到输出流中。

std::endl 用于在输出流中插入换行符。

二、格式化输入输出

C++ 提供了格式化标志和操纵算子,可以控制输入输出的格式。

2.2下面是一个示例

#include <iostream>
#include <iomanip>

int main() {
    double pi = 3.14159;
    std::cout << "圆周率:" << std::setprecision(4) << pi << std::endl;

    int num = 10;
    std::cout << "数字:" << std::setw(5) << std::setfill('0') << num << std::endl;

    return 0;
}

解释

std::setprecision 设置输出浮点数的精度。

std::setw 设置输出字段的宽度。

std::setfill 设置填充字符。

三、文件读写

操作 C++ 允许我们使用文件流来读写文件。

3.3下面是一个文件读写的示例

#include <iostream>
#include <fstream>

int main() {
    // 写入文件
    std::ofstream outfile("data.txt");
    if (outfile.is_open()) {
        outfile << "Hello, World!";
        outfile.close();
    } else {
        std::cout << "无法打开文件" << std::endl;
    }

    // 读取文件
    std::ifstream infile("data.txt");
    std::string line;
    if (infile.is_open()) {
        while (getline(infile, line)) {
            std::cout << line << std::endl;
        }
        infile.close();
    } else {
        std::cout << "无法打开文件" << std::endl;
    }

    return 0;
}

解释

std::ofstream 用于写入文件。

std::ifstream 用于读取文件。

is_open() 函数用于检查文件是否成功打开。

getline 函数用于逐行读取文件内容。

四、异常处理和错误检测

在文件操作过程中,我们需要进行异常处理和错误检测,以保证程序的健壮性。

4.1下面是一个示例

#include <iostream>
#include <fstream>

int main() {
    std::ofstream outfile("data.txt");
    if (!outfile) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    try {
        // 写入文件
        outfile << "Hello, World!";
        outfile.close();

        // 读取文件
        std::ifstream infile("data.txt");
        if (!infile) {
            throw std::runtime_error("无法打开文件");
        }

        std::string line;
        while (getline(infile, line)) {
            std::cout << line << std::endl;
        }
        infile.close();
    } catch (const std::exception& e) {
        std::cerr << "发生错误:" << e.what() << std::endl;
        return 1;
    }

    return 0;
}

解释

使用 std::cerr 输出错误信息。

使用 try-catch 块捕获并处理可能的异常。

使用 throw 抛出自定义异常。

五、一个实例代码

5.1如何读取 CSV 文件,并计算每一列的平均值

#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>

int main() {
    std::ifstream infile("data.csv");
    if (!infile) {
        std::cerr << "无法打开文件" << std::endl;
        return 1;
    }

    std::string line;
    std::vector<std::vector<double>> data;
    int num_cols = 0;

    while (getline(infile, line)) {
        std::stringstream ss(line);
        std::vector<double> row;
        double val;

        while (ss >> val) {
            row.push_back(val);
            if (ss.peek() == ',') {
                ss.ignore();
            }
        }

        if (num_cols == 0) {
            num_cols = row.size();
        } else if (row.size() != num_cols) {
            std::cerr << "数据格式不正确" << std::endl;
            return 1;
        }

        data.push_back(row);
    }

    infile.close();

    for (int j = 0; j < num_cols; ++j) {
        double sum = 0.0;
        for (int i = 0; i < data.size(); ++i) {
            sum += data[i][j];
        }
        double avg = sum / data.size();
        std::cout << "第 " << j + 1 << " 列的平均值为:" << avg << std::endl;
    }

    return 0;
}

解释:

  • std::ifstream 用于读取文件。
  • getline 函数用于逐行读取文件内容。
  • 使用 std::stringstream 将每行内容转换为一个 double 类型的 vector。
  • 检查数据格式是否正确,保证每一行的列数相同。
  • 使用二维 vector 存储数据。
  • 计算每一列的平均值。

除此之外,还有一些最佳实践和注意事项:文章来源地址https://www.toymoban.com/news/detail-789352.html

  1. 输入输出操作需要谨慎处理,避免出现死循环或者读写错误等问题。
  2. 在进行文件读写操作时,需要确保文件存在,并且需要考虑文件权限等问题。
  3. 在读取 CSV 文件等格式化数据时,需要特别注意数据格式的一致性,避免出现数据错误或程序崩溃等情况。
  4. 在进行异常处理时,需要尽可能详细地输出错误信息,以便快速定位问题。
  5. 在进行文件读写操作时,需要及时关闭文件流,释放资源。
  6. 在进行大量数据处理时,需要考虑内存占用等问题,避免出现程序崩溃等情况。
  7. 在进行输入输出和文件操作时,需要充分利用 C++ STL 提供的丰富功能和算法库,以提高开发效率和程序质量。

到了这里,关于C++学习笔记——输入、输出和文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++ 基础知识笔记(一)变量和数据的输入输出

    C++的基础知识包括如下内容: 变量和数据的输入输出 数据类型和运算符 比较运算符和布尔类型 if-else 选择语句、多分支语句 switch 分支语句 逻辑运算符 for 循环 for 循环进阶 数组 数组进阶 while 循环 格式化输入输出 浮点数和数据类型转换 字符串和字符数组 string 类型的字符

    2024年02月09日
    浏览(35)
  • C语言学习笔记:输入&输出

    ✨博文作者:烟雨孤舟 💖 喜欢的可以 点赞 收藏 关注哦~~ ✍️ 作者简介: 一个热爱大数据的学习者 ✍️ 笔记简介:作为大数据爱好者,以下是个人总结的学习笔记,如有错误,请多多指教! 目录 scanf和printf gets和puts getchar和putchar printf是格式化的输出函数,scanf是C语言的输

    2024年02月09日
    浏览(35)
  • 【C++学习】C++入门 | C++该怎么学 | 命名空间 | 输入输出

    欢迎来到C++的世界,这是一门令人兴奋的语言。 好吧,每当我开始阅读C++的书籍的时候,开头的第一句话必定是这个, 也不知道其他语言的编程书籍是不是这样,那就让这句话也作为我C++分享之路上的第一句话吧。 目录 写在前面 1. C++怎么学? 1. C语言 2. Object-Oriented C++ 3.

    2024年02月10日
    浏览(30)
  • 【C++】万字详解IO流(输入输出流+文件流+字符串流)

    流的概念:若干个字节组成的一个字节序列,代表信息从源到目的的流动 头文件 iostream 从标准输入读取流 cin //把空格、换行作为分隔符(不读空格) 从标准输出写入流 cout 首先,我们的这个分标题是插入符 , 这样一看大家是不是都懵了:cina,为什么不是 这个符号是插入符呢

    2024年02月04日
    浏览(42)
  • MSP432学习笔记2——GPIO输入输出

    今日继续更新我的MSP432速通笔记 新的硬件芯片到手,脑子是空白的,板子是漆黑的,诺想要缓解这份尴尬,便来点灯吧! 今日主要速通MSP432的GPIO输入输出功能,目标是连接矩阵键盘与LED流水灯模块 到MSP432P401R开发板上进行练习。 文章 附上原理图与代码 目录 ​编辑 基础知

    2024年02月16日
    浏览(28)
  • stm32学习笔记-3GPIO通用输入输出口

    注:笔记主要参考B站 江科大自化协 教学视频“STM32入门教程-2023持续更新中”。 注:工程及代码文件放在了本人的Github仓库。 GPIO (General Purpose Input Output) 通用输入输出口 可配置为8种输入输出模式。 引脚电平范围为0V~3.3V ,部分引脚可容忍5V(图1-6中IO口电平为FT标识的)

    2024年02月15日
    浏览(38)
  • 深度学习——卷积层的输入输出多通道(笔记)+代码

    一 输入通道 1.多个输入通道 ①彩色图像有RGB(红绿蓝组成)三个通道 ②转换为灰度会丢失信息 灰度一个通道 2.多个通道输出的结果:只有一个输出 每个通道都有对应的卷积核,输出的结果是所有通道卷积核的和 【演示】二个通道的输出结果 输出结果某个值的计算:  3.输

    2024年02月07日
    浏览(34)
  • Java学习笔记之----I/O(输入/输出)一

            在变量、数组和对象中存储的数据是暂时存在的,程序结束后它们就会丢失。想要永久地存储程序创建的数据,就需要将其保存在磁盘文件中(就是保存在电脑的C盘或D盘中),而只有数据存储起来才可以在其他程序中使用它们。Java的I/O技术可以将数据保存到文本文件

    2024年02月10日
    浏览(25)
  • C++文件操作基础 读写文本、二进制文件 输入输出流 文件位置指针以及随机存取 文件缓冲区以及流状态

    文本文件一般以行的形式组织数据。 包含头文件: #include fstream 类: ofstream(output file stream) ofstream 打开文件的模式(方式):类内open()成员函数参数2.参数1是文件存储/创建路径 例如:fout.open(filename,ios::app); 对于 ofstream,不管用哪种模式打开文件,如果文件不存在,都会创

    2024年01月25日
    浏览(39)
  • 【深度学习】ONNX 模型文件修改节点的名称,修改输入名称,修改输出名称

    想要修改onnx模型文件的节点名称,要么在最初的pytorch代码里去改,要么就直接在onnx模型文件里改。 而我这里直接在onnx模型文件改,我有一个onnx文件,输出节点的名字是这样的: 这不改就看着真难受,那么就用python改: 改完后: 其实修改其他节点的名称也可以这样去做,

    2024年02月15日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包