c++基础——文件操作 (创建txt文件并写入)

C++文件操作

创建txt文件并写入数据

创建cpp

首先我们新建一个cpp文件,test_txt.cpp,然后使用vscode打开。

代码内容

需要添加头文件

#include <iostream>
#include <fstream>

创建一个test文本文件

    std::ofstream outfile("test.txt");//创建一个输出流对象outfile

    outfile << 1<< " 0 0\n"; // 写入 数据并换行(写入的内容包括换行)
    outfile << 2<< " 0 0\n";
    outfile << 3<< " 0 0\n";

    // 关闭文件
    outfile.close();

完成之后要正常关闭文件,如果程序异常退出会出现没有正常存储进去数据的现象原因是数据还在缓存区没有被写进文件里面

运行代码

点击左侧的三角将进行代码的运行,在我们的cpp同级目录下面会出现一个test_txt.exe 这个文件夹是运行完程序之后生成的二进制可执行文件,还有一个test.txt就是我们使用代码生成的txt文本文件打开可以看到我们在代码里面写入的三行文件
在这里插入图片描述
在这里插入图片描述
这样就可以成功将数据记录下来了

打开文本文件并读取

我们新建一个cpp read.cpp用来读取这个文本文件
添加头文件

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

和创建文件的时候一样,我们需要创建一个输入流对象outfile然后对这个对象进行操作。

代码

代码如下

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>
int main()
{
    std::ifstream infile("test.txt");//采用便准输入流方式打开“test.txt"文件,infile是给这个文件流对象起的名字,可以对这个对象进行操作。

    if (infile.is_open()) 
    {

        std::cout << "文件成功打开!\n";
        // 在这里可以继续处理文件内容

    } 
    else 
    {
        std::cout << "无法打开文件!\n";//对于打开文件的异常处理
    }
    //打开文件和异常处理
    double a1,b1,c1;
    double a2,b2,c2;
    for(int i = 0;i<3;i++)
    {
        std::string line;
        getline(infile, line);//一次读取一行内容并即将这行内容存储在string类型对象line中
        std::istringstream iss(line); 
        double a,b,c;
        if (iss >> a >> b >> c)
        {
            std::cout<<"line: "<<line[0]<<" "<<line[1]<<" "<<line[2]<<std::endl;//整行内容打印
            std::cout<<a<<" "<<b<<" "<<c<<std::endl;//单独打印单独字符
        }
        else
        {
            std::cout<<"erro!"<<std::endl;
        }
    };
    return 0;
}

结果

运行完之后可以看到终端输出如下
在这里插入图片描述
这样就完成了一个简单的txt文件读写功能。

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将C++的std::shared_ptr<char>写入文件,可以使用std::ofstream类来打开文件写入数据。首先,你需要创建一个std::shared_ptr<char>,并将其初始化为指向要写入的字符数组。然后,你可以使用std::ofstream的写入函数将数据写入文件。最后,确保在程序结束时关闭文件和释放内存。 以下是一个示例代码,演示了如何将std::shared_ptr<char>写入文件: ```cpp #include <iostream> #include <fstream> #include <memory> int main() { // 创建一个包含要写入的数据的shared_ptr<char> std::shared_ptr<char> data(new char{'H', 'e', 'l', 'l', 'o'}); // 打开文件写入数据 std::ofstream file("output.txt", std::ios::binary); if (file.is_open()) { file.write(data.get(), 5); file.close(); std::cout << "数据已成功写入文件" << std::endl; } else { std::cout << "无法打开文件" << std::endl; } // 注意:不需要手动释放内存,shared_ptr会在不再使用时自动释放 return 0; } ``` 上面的代码将字符数组"Hell0"写入了名为"output.txt"的文件中。注意,我们使用了`std::ios::binary`来打开文件,这是因为我们要写入二进制数据。如果要写入文本数据,可以省略这个参数。 请确保你在使用代码之前包含了相关的头文件,并根据自己的需求修改文件名和要写入的数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C++智能指针2——共享指针shared_ptr详解](https://blog.csdn.net/xuyouqiang1987/article/details/104034184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值