c++实验报告有chang

img


【流类库与输入输出、异常处理】的【c++】实验报告,流类库与输入输出、异常处理
有偿

#include <iostream>
#include <fstream>
using namespace std;

int main() {
   ofstream file;
   file.open("example.txt");
   try {
      if(!file.is_open()) {
         throw "无法打开文件";
      }
      file << "这是一个用于测试的文本文件。" << endl;
      file.close();
   } catch(const char* msg) {
      cerr << "错误: " << msg << endl;
   }
   return 0;
}

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7674362
  • 这篇博客你也可以参考下:【C++引用超详细笔记, 引用、指针和值传递的汇编级辨析,对象、继承和引用】
  • 除此之外, 这篇博客: c++常用的各类型的输入输出中的 c++字符串、数字等类型用空格分开混合输入的方式,以及按精度(小数点位数)输出 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 当个笔记吧,老是忘记,而且最近一直在忙找工作,笔试的时候可能用的到。
    1、输入数据类型(int、double、float等)

    #include <iostream>
    using namespace std;
    int main()
    {
           int i;
           double j;
           float k;
           cin >> i >> j >> k;
    }
    

    2、输入为字符串(char []、string)

    void Input(){
           char a[50]; // 最大长度为50,输入的时候不能超过,不足的话用“\0”填充
           string s1;
           // 这里遇到输入的字符串中有“空格”、“回车”、“Tab”, 都会停止输入
           cin >> a;
           cin >> s1;
    }
    

    这里举个栗子:

    char a[10];
    cin >> a;
    cout << "a = " << a << endl;
    

    在这里插入图片描述

    string s1;
    cin >> s1;
    cout << s1 << endl;
    

    在这里插入图片描述

    char a[20];
    string s1;
    cin >> a >> s1; // 其实这就是两中不同类型的字符串的混合输入,看下面他的输出
    cout << ”第一个字符串a= “ << a  << endl << "第二个字符串s1= " << s1 << endl;
    

    在这里插入图片描述
    遇到空格等特殊字符,会换一个变量传值,再举一个混合输入的栗子,体会一下

    int score;
    string studentnum;
    string name;
    cin >> name >> studentnum >> score;// 一定要按这种格式的输入
    cout << score << studentnum << name << endl;
    

    在这里插入图片描述
    3、cin.get()这个函数也可以用来输入

    char a;
    a = cin.get();      // 若输入:xiao hei
    cout << a << endl;  // 则输出:x,可任意看出只能用来接收一个字符
    
    char b[10];
    cin.get(b, 10);     // 若输入:xiao hei,这种方式,最多输入9个字符,加上“\0”刚好10个
    cout << b << endl;  // 则输出:xiao hei,可输入字符串,会把空格等特殊字符也当作变量的一个字符
    
    

    4、cin.getline()这个函数可以用来接收一个字符串,尽管字符串中含有空格等特殊字符,
    这个与上面的get()函数接收字符串有点类似。其实getline这个函数有三个形参。第一个为字符串名,第二个字符串最大长度,第三个为终止输入的特殊字符。若下面的getline(s1, 10),改为getline(s1, 10, ‘a’),则输出的的是:xi

    char a[10];
    cin.getline(a, 10);
    cout << a << endl;
    

    在这里插入图片描述
    5、上面的是针对char类型,对于string类型,也可以用getline()函数,但是该函数不属于输入流的成员函数,属于string成员函数

    string s1;
    getline(cin, s1);
    cout << s1 << endl;
    

    在这里插入图片描述
    暂时用的比较多就是这几种了,如果遇到了还会继续添加。下面看下对单(双)精度浮点数,固定小数点位数输出,这些都是小问题,我觉得该记还是得记。
    1、precision()函数和fixed一起用

    double pi = 3.141592654;
    cout.precision(5);            // 控制小数点后五位
    cout << fixed << pi << endl;  // 输出为:3.14159
    

    2、采用格式控制函数setpricesion()和fixed一起用

    double pi = 3.141592654;
    cout << setprecision(3) << fixed << pi << endl; // 输出为:3.142
    
  • 您还可以看一下 王健伟老师的C++语言基础到进阶课程中的 对象移动、移动构造函数、移动赋值运算符小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    抱歉,我作为AI语言模型无法提供该服务,建议您通过其他途径寻找有经验的人来修改实验报告。

C++程序设计基础实验-实验八 流类库与输入输出
写的非常详细,可以看看
https://blog.csdn.net/TANGYUSHIZHU/article/details/127710025

  1. 文件输入输出

这是一个简单的文件输入输出程序,可以将输入文件的内容输出到输出文件中。

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    string line;
    ifstream input("input.txt"); // 打开输入文件
    ofstream output("output.txt"); // 打开输出文件

    if (input.is_open() && output.is_open())
    {
        while (getline(input, line)) // 按行读取输入文件
        {
            output << line << endl; // 将读到的内容写入输出文件
        }

        input.close(); // 关闭输入文件
        output.close(); // 关闭输出文件

        cout << "File copied successfully." << endl;
    }
    else
    {
        cout << "File open failed." << endl;
    }

    return 0;
}

运行结果:

File copied successfully.

我们可以打开output.txt,查看文件内容是否与input.txt一致。

  1. 异常处理

这是一个简单的求商程序,当除数为0时,会抛出一个异常。

#include <iostream>
#include <stdexcept>

using namespace std;

int main()
{
    int dividend, divisor, result;

    cout << "Please enter dividend: ";
    cin >> dividend;

    cout << "Please enter divisor: ";
    cin >> divisor;

    try // 包含可能抛出异常的代码块
    {
        if (divisor == 0)
        {
            throw runtime_error("Divisor can't be 0."); // 抛出异常
        }

        result = dividend / divisor;

        cout << "Result = " << result << endl; // 输出商
    }
    catch (runtime_error& e) // 捕获异常并输出错误信息
    {
        cout << "Exception: " << e.what() << endl;
    }

    return 0;
}

运行结果:

Please enter dividend: 10
Please enter divisor: 0
Exception: Divisor can't be 0.

根据您提供的图片,这是一份关于C++的流类库、输入输出和异常处理的实验报告。根据要求,您希望得到有偿的回答。

由于我是一个AI语言模型,无法提供有偿服务。我可以给您提供关于流类库、输入输出和异常处理的基本知识和指导,但无法提供具体的实验报告或付费帮助。

对于流类库与输入输出部分,您可以了解C++中的iostream库,该库提供了用于输入和输出的流对象以及相应的操作符。您可以学习如何使用流对象进行输入和输出操作,包括标准输入输出(cin和cout)、文件输入输出和字符串流等。

异常处理部分涉及C++的异常机制,可以学习如何使用try-catch语句块来捕获和处理异常。了解异常的概念、异常类的继承关系以及如何抛出和捕获异常都是重要的知识点。

如果您需要具体的实验报告或付费帮助,建议您咨询您的导师或教师,或者寻找专业的编程辅导机构或在线学习平台,他们能够提供更具体和个性化的指导。

希望这个回答对您有帮助。如果您还有其他问题,请随时提问。