会飞的萨摩 发表于 2020-7-25 00:05:09

c++文件流基础操作疑问

为什么我按照小甲鱼程序进行实验时,总是会覆盖掉原来的数据,

只显示ilovefish.com??求解答,我去网上查了都说如果只用一个文件的话是没办法在文件开头插入的

为什么我看视频小甲鱼就是在开头插入ilovefish.com的??

#include <fstream>                //file stream
#include <iostream>

using namespace std;

int main()
{
        fstream fp("test.txt", ios::in | ios::out );                //模式定义为 读取与写入
        if (!fp)
        {
                cerr << "打开文件失败!" << endl;
                return 0;
        }
       
        fp << "Ilovefish.com";                        //实现写入功能

        static char str;      //静态变量,不可更改

        fp.seekg(ios::beg);// 使得文件指针指向文件头 ios::end 则是文件尾。

        fp >> str;                                        //实现读取功能,遇空格会终止读取

        cout << str << endl;

        fp.close();

        return 0;
}

livcui 发表于 2020-7-25 07:55:12

#include <fstream>                //file stream
#include <iostream>

using namespace std;

int main()
{
    fstream fp("I://test.txt", ios::in);
    fstream ft("I://test_2.txt", ios::in | ios::app);

    if (!fp.is_open())
    {
      cerr << "打开文件失败!" << endl;
      return 0;
    }

    static char string;
    fp >> string;   // 读取文件1

   
    ft << "Ilovefish.com\n";       //实现写入功能
    ft << string;
    static char str;      // 静态变量,不可更改
    ft.seekg(ios::beg);          // 使得文件指针指向文件头 ios::end 则是文件尾。

    ft >> str;                   //实现读取功能,遇空格会终止读取

    cout << str << endl;

    fp.close();
    ft.close();

    return 0;
}据我所知,一个文件不行,但两个文件效果也是一样的。


会飞的萨摩 发表于 2020-7-25 11:11:50

livcui 发表于 2020-7-25 07:55
据我所知,一个文件不行,但两个文件效果也是一样的。

不是,我的意思是,如果要实现从 文件a 开头插入添加内容的话,由于app模式是在文件尾插入,
是不是得再创建一个新的 文件b,然后把要添加的内容先流到文件b
再从文件a复制内容流向文件b
这样就实现了在文件开头插入内容,

livcui 发表于 2020-7-25 11:22:17

会飞的萨摩 发表于 2020-7-25 11:11
不是,我的意思是,如果要实现从 文件a 开头插入添加内容的话,由于app模式是在文件尾插入,
是不是得再 ...

嗯,这是我的想法,也许有大佬还有别的思路吧,
但我是想不到只用一个文件的方法

livcui 发表于 2020-7-25 13:51:10

设置最佳{:10_256:}
页: [1]
查看完整版本: c++文件流基础操作疑问