精华内容
下载资源
问答
  • c++文件操作

    千次阅读 2019-09-04 12:34:07
    c++文件操作可以使用库"fstream"来解决 它有 3 个很重要的类。 ifstream ofstream fstream ifstream 是针对文件读取的流 ofstream 是针对文件写入的流 fstream 针对文件读取和写入的流 打开文件 void open(const ...

    c++文件操作可以使用库"fstream"来解决

    它有 3 个很重要的类。

    ifstream
    ofstream
    fstream
    

    ifstream 是针对文件读取的流
    ofstream 是针对文件写入的流
    fstream 针对文件读取和写入的流

    打开文件

    void open(const std::string& __s, ios_base::openmode __mode );
    

    open 有 2 个参数,第一个参数代表要打开的文件的地址。
    第二个参数代表操作文件的模式。(下面给出具体)

    模式标志 描述
    ios::app 追加模式,所有写入的数据都追加到文件末尾
    ios::ate 文件打开以后定义到文件末尾
    ios::in 打开文件用于读取
    ios::out 打开文件用于写入(若文件已存在,清除之前所有内容)
    ios::trunc 若该文件存在,其内容在打开文件前被截断,即把文件长度设为0。(移除原文件内容,不存在时不会自创文件)

    例子

    例1:
    (读取文档,每行为一个保存在容器中,再用迭代器输出)

    #include<iostream>
    #include<vector>
    #include<string>
    #include<fstream>
    using namespace std;
    
    int main(void)
    {
    	ifstream in("data");//打开文件
    	if (!in)
    	{
    		cerr << "无法打开输入文件!" << endl;
    		return -1;
    	}
    	string line;
    	vector<string> words;
    	while (getline(in, line))//从文件中读取一行
    	{
    		words.push_back(line);//添加到vector中
    	}
    	
    	in.close();//输入完毕,关闭文件
    
    	vector<string>::const_iterator it = words.begin();//迭代器
    	while (it != words.end())       //遍历输出vector中的元素
    	{
    		cout << *it << endl;
    		++it;
    	}
    	//return 0;
    	system("pause");
    }
    

    例2:

    #include<iostream>
    #include<fstream>
    using namespace std;
    
    int main()
    {
    	fstream fd;
    	fd.open("123.txt",ios::app);
    	fd<<"满堂花醉三千客   无人"<<endl;
    	fd<<"一剑霜寒十四州";
    	fd<<"zzq"; 
    	fd.close();
    	
    	ifstream in;//读取文件 
    	in.open("123.txt",ios::in);
    	string s="1",t="2";//string变量,遇到空格和换行会截止
    	getline(in,t);
    	in>>s;
    	cout<<s<<endl;
    	cout<<t;
    	in.close();
    
    	return 0;
    }
    
    展开全文
  • C++文件输入输出

    千次阅读 2020-07-07 22:38:05
    C++文件输入输出写入文件读取文件读写文件参考资料 C++文件输入输出包含头文件:fstream 写入文件 int main() { ifstream test_file("test.txt"); //调用构造函数,生成ifstream类的一个对象(文件句柄),且与...


    C++文件输入输出包含头文件:fstream

    写入文件

    int main()
    {
        ifstream test_file("test.txt"); //调用构造函数,生成ifstream类的一个对象(文件句柄),且与文件“test.txt”关联
    
        ifstream test_fille;        //生成ifstream类的一个对象(文件句柄),暂时没有与之关联的文件
        test_file.open("test.txt"); //文件句柄与文件关联
        test_file.close();          //文件句柄终止与文件的关联
        return 0;
    }
    

    打开一个文件,并写入字符:

    int main()
    {
        // ofstream file("test.txt");//调用ofstream类的构造函数生成对象
    
        ofstream file;
        file.open("test.txt"); //等价于上面那句
    
        string a;
        cin >> a;
        file << a << endl;
        return 0;
    }
    
    示例1

    读取文件

    打开一个文件,并读取文件:

    int main()
    {
        // ifstream file("test.txt");
    
        ifstream file;
        file.open("test.txt"); //等价于上面那句
    
        string a;
        file >> a;
        cout << a << endl;
        return 0;
    }
    
    示例2

    读写文件

    打开一个文件,并读写文件:

    int main()
    {
        fstream file_both("test.txt", ios::in | ios::out);
    
        string a;
        file_both >> a;
    
        file_both.seekg(2, ios::beg); //移动“内置指针”位置到文件开始第三个字符处
        file_both << a;
        /*
        文件中原本含有字符串“hesorchen”
        程序执行完之后变成“hehesorchen”
        */
        return 0;
    }
    
    示例3

    参考资料

    1. C++中的文件输入/输出
    2. C++文件输入和输出
    展开全文
  • c++文件读写操作

    万次阅读 多人点赞 2018-04-17 11:07:00
    近期适配几款游戏的数据,因为重复量太大,因此写一个对数据进行处理的程序,下面是整个...fstream提供了三个类,用来实现c++文件的操作(文件的创建、读、写) ifstream -- 从已有的文件读入 ofstream -- 向...

    近期适配几款游戏的数据,因为重复量太大,因此写一个对数据进行处理的程序,下面是整个过程中接触到的一些东西。

    以下内容转载自:https://www.cnblogs.com/1242118789lr/p/6885691.html。

    fstream提供了三个类,用来实现c++对文件的操作(文件的创建、读、写)

             ifstream -- 从已有的文件读入

           ofstream -- 向文件写内容

           fstream - 打开文件供读写


    文件打开模式:

         ios::in             只读

         ios::out            只写

         ios::app            从文件末尾开始写,防止丢失文件中原来就有的内容

         ios::binary         二进制模式

         ios::nocreate       打开一个文件时,如果文件不存在,不创建文件

         ios::noreplace      打开一个文件时,如果文件不存在,创建该文件

         ios::trunc          打开一个文件,然后清空内容

         ios::ate            打开一个文件时,将位置移动到文件尾


     文件指针位置在c++中的用法:

         ios::beg   文件头

         ios::end   文件尾

         ios::cur   当前位置


    举个例子:

         file.seekg(0,ios::beg);   //让文件指针定位到文件开头 

         file.seekg(0,ios::end);   //让文件指针定位到文件末尾 

         file.seekg(10,ios::cur);   //让文件指针从当前位置向文件末方向移动10个字节 

         file.seekg(-10,ios::cur);   //让文件指针从当前位置向文件开始方向移动10个字节 

         file.seekg(10,ios::beg);   //让文件指针定位到离文件开头10个字节的位置

    注意:移动的单位是字节,而不是行


    常用的错误判断方法:

        good()   如果文件打开成功

        bad()   打开文件时发生错误

        eof()    到达文件尾


    下面给出一个例子,读取hello.txt文件中的字符串,写入out.txt中:
    #include <vector> 
    #include <string> 
    #include <fstream> 
    #include <iostream> 
     
    using namespace std; 
     
    int main() 
    { 
        ifstream myfile("G:\\C++ project\\Read\\hello.txt"); 
        ofstream outfile("G:\\C++ project\\Read\\out.txt", ios::app); 
        string temp; 
        if (!myfile.is_open()) 
        { 
            cout << "未成功打开文件" << endl; 
        } 
        while(getline(myfile,temp)) 
        { 
            outfile << temp; 
            outfile << endl;
        } 
        myfile.close(); 
        outfile.close();
        return 0; 
    } 
    
    

    其中getline的功能如下

    –从输入流中读入字符,存到string变量
    –直到出现以下情况为止:
    •读入了文件结束标志
    •读到一个新行
    •达到字符串的最大长度
    –如果getline没有读入字符,将返回false,可用于判断文件是否结束

    上述代码读取的是string类型的数据,那么对于int型数据该怎么办呢,其实道理差不多,下面举例说明:

    #include<iostream>
    #include <string>
    #include <vector>
    #include <fstream>  //文件流库函数
     
    using namespace std;
     
    int cost[10][10];
     
    int main()
    {  
        int v, w, weight;
        ifstream infile;   //输入流
        ofstream outfile;   //输出流
     
        infile.open("G:\\C++ project\\Read\\data.txt", ios::in); 
        if(!infile.is_open ())
            cout << "Open file failure" << endl;
        while (!infile.eof())            // 若未到文件结束一直循环
        {
            infile >> v >> w >> weight;
            cost[v][w] = weight;
            cost[w][v] = weight;                
        }
        infile.close();   //关闭文件
         
        outfile.open("G:\\C++ project\\Read\\result.txt", ios::app);   //每次写都定位的文件结尾,不会丢失原来的内容,用out则会丢失原来的内容
        if(!outfile.is_open ())
            cout << "Open file failure" << endl;
        for (int i = 0; i != 10; ++i)
        {
            for (int j = 0; j != 10; ++j)
            {
                outfile << i << "\t" << j << "\t" << cost[i][j] << endl;  //在result.txt中写入结果
            }
     
        }
        outfile.close();
     
        return 0;
        while (1);
    }

    上述代码的功能是读取data.txt文件的数据,注意,此时要求data.txt文件中的数据是三个一行,每个数据用空格隔开,之所以这样做,是因为在许多项目中,比如某为的算法比赛中,根据图的数据构建图的邻接矩阵或者邻接表时,数据都是这样安排的,在上面的代码中v和w代表顶点标号,weight代表边<v,w>的权值,上述代码的功能就是构建由data.txt文件描述的图的邻近矩阵。

        data.txt文件的数据如下:


    程序运行后,result.txt文件的内容如下:


    因为数据太长只给出一部分


    事实上,要求data.txt文件中的数据都是如此排列的要求有点高,如果data.txt文件中有的行有两个数据,有的行有三个数据,有的行有4个数据,上述方法就行不通了,其实改一下上面的代码就可以了,重要的是你要明白什么时候读取的那一行有几个数据,下面举例说明:

    假设data.txt文件中的数据如下:

    每行的数据都不一样多

    第一行的数据表示,每行有三个数据的有5行,且在前面,每行有两个的数据的有两行,在后面,除第一行外,后面的才是正真的数据,因此读取这些数据的代码如下:

    #include<iostream>
    #include <string>
    #include <vector>
    #include <fstream>  //文件流库函数
     
    using namespace std;
     
    int cost[10][10];
     
    int main()
    {  
        int Num_3,Num_2;
        int v, w, weight;
        ifstream infile;   //输入流
        ofstream outfile;   //输出流
     
        infile.open("G:\\C++ project\\Read\\data.txt", ios::in); 
        if(!infile.is_open ())
            cout << "Open file failure" << endl;
     
        infile >> Num_3 >>Num_2 ;   //先读取第一行
     
        while (0 != Num_3 )            // 读取3个数据的
        {
            infile >> v >> w >> weight;
            cost[v][w] = weight;
            cost[w][v] = weight;   
            Num_3--;
        }
     
        while (0 != Num_2)            // 读取3个数据的
        {
            infile >> v >> w;
            cost[v][w] = 100;
            cost[w][v] = 100;  
            Num_2--;
        }
     
        infile.close();   //关闭文件
         
        outfile.open("G:\\C++ project\\Read\\result.txt", ios::out);   //每次写都定位的文件结尾,不会丢失原来的内容,用out则会丢失原来的内容
        if(!outfile.is_open ())
            cout << "Open file failure" << endl;
        for (int i = 0; i != 10; ++i)
        {
            for (int j = 0; j != 10; ++j)
            {
                outfile << i << "\t" << j << "\t" << cost[i][j] << endl;  //在result.txt中写入结果
            }
     
        }
        outfile.close();
     
        return 0;
        while (1);
    }

     为方便检验,我们把那些没有指明权值的边(即对应data.txt文件中那些每行只有两个数据的)的权值设为100,上述代码执行结果如下:


    结果显示,读取正确。

     注意:上面的代码之所以运行成立,是因为每行之间空几行好像并没有影响,比如上面的data.txt中,第一行与第二行之间空1行或者2行都没有关系。


    二、string流

    string头文件定义了三个类型来支持内存IO,istringstream向string读取数据,ostringstream从string写数据,stringstream既可从string读取数据也可向string写数据,就像string是一个IO流一样。

    1、istringstream的用法,例子如下:

    #include <string> 
    #include <sstream>    //使用istringstream所需要的头文件 
    #include <iostream> 
    using namespace std; 
    int main() 
    { 
        string str = "Hello word! I am Lee"; 
        istringstream is(str);    //将is绑定到str
        string s; 
        while (is >> s) 
        { 
            cout << s << endl; 
        } 
        return 0; 
    }

    上述代码运行结果如下:

    这相当于把一个句子拆分成单词,联系到前文提到的从文件中读取string的方法,如果读取到的string对象为一个句子,包含很多单词,那么我们就可以运用这种方法把string对象拆分开来。

     2、ostringstream的用法

            ostringstream同样是由一个string对象构造而来,ostringstream类向一个string插入字符。 


    #include <string> 
    #include <sstream>    //使用ostringstream所需要的头文件 
    #include <iostream>  
    using namespace std;  
    int main()    
    {  
        ostringstream ostr;  
       // ostr.str("abc");//如果构造的时候设置了字符串参数,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长  
        ostr.put('d');  
        ostr.put('e');  
        ostr<<"fg";    
        string gstr = ostr.str();  
        cout<<gstr << endl; 
        return 0;
    } 

    运行结果如下:


    在上例代码中,我们通过put()或者左移操作符可以不断向ostr插入单个字符或者是字符串,通过str()函数返回增长过后的完整字符串数据,但值 得注意的一点是,当构造的时候对象内已经存在字符串数据的时候,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长。





    展开全文
  • C++文件流关于读到空格停止

    千次阅读 2016-09-08 16:00:32
    C++ 文件

        在c++中使用ifstream读文件的时候会以空格为分隔符,后面的内容就不读取了。这时候可以调用getline函数来读取制定大小的内容。具体代码如下:

    #include "stdafx.h"
    #include 
    #include 
    #include 
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    	//创建Test.txt文件
    	ofstream outFile("Test.txt");
    	outFile<<10<<"have a cup of tea"<>nNum;
    	inFile>>szBuf1;
    //	inFile.getline(szBuf2, 18);
    	cout<

    运行后:

    调用getline函数代码如下:
    #include "stdafx.h"
    #include 
    #include 
    #include 
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    	//创建Test.txt文件
    	ofstream outFile("Test.txt");
    	outFile<<10<<"have a cup of tea"<>nNum;
    //	inFile>>szBuf1;
    	inFile.getline(szBuf2, 18);
    	cout<

    运行后:




    展开全文
  • 用gcc编译C++文件

    万次阅读 2017-01-25 19:34:08
    我们误以为gcc只能用来编译C...gcc也可以编译C++文件,只是gcc不能自动联接C++程序使用的库,即链接过程我们不能用gcc 而g++实际上在编译C++文件时也是使用gcc编译器,在链接时才使用g++ 例子1: #include temp
  • C/C++ 文件路径解析

    千次阅读 2016-03-02 19:14:03
    C/C++ 文件路径解析,获取文件所在盘符、路径、文件名、拓展名。
  • c++ 文件读取函数总结

    千次阅读 2017-09-17 01:01:48
    c++ 文件读取函数总结IO相关类继承关系 本文讲解文件读写,因此主要介绍相关类以及的fopen。
  • linux环境下编译C++文件

    千次阅读 2017-12-14 15:41:49
    最近需要将代码上传到...稍微学习了一下ubuntu环境下的C++文件编译方式。单个源文件生成可执行程序//随便写个简单的程序: /*test.cpp*/ #include int main(int argc,char *argv[]) { std::cout , world" << std:
  • c++文件读写之fread和fwrite

    万次阅读 多人点赞 2015-03-31 16:05:11
    fwrite和fread基本语法二进制文件...这篇博文中算是比较详细的比较了文本文件和二进制文件,我看过之后,对文本文件和二进制文件的理解就是: 1 文本文件 基于字符编码的文件,一般的都是基于ASCII码。对于平时接触到
  • vscode 编译c++文件无法生成.exe文件的问题解决方法 小编本想使用vscode进行代码编写,感受一下高口碑的自定义编译工具,没想到写了个hello world却编译不出二进制文件进行调试。 思来想去,倒腾了一个多小时就在...
  • 使用VScode 编写的C++文件,文件名为中文。 编译运行可以正常进行。 但是设置断点单步调试的时候却会报错, 提示找不到文件。 ![图片说明](https://img-ask.csdn.net/upload/201904/24/1556113558_253108.png)...
  • C++文件读写详解(ofstream,ifstream,fstream)

    万次阅读 多人点赞 2011-10-10 16:33:54
    在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容: #include ofstream //文件...
  • (转)c++文件操作详解

    万次阅读 多人点赞 2018-05-11 15:35:30
    C++文件操作详解 本文转自:https://blog.csdn.net/kingstar158/article/details/6859379 在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位...
  • 本篇文章: ​ 主要帮助大家解决如何在Clion中创建并运行C/C++文件的问题。其中解决了创建C/C++文件报错问题。 .
  • vs如何运行外部 C++ 文件

    千次阅读 2017-03-03 19:55:15
    首先新建一个 C++ 项目,创建好之后,在项目里面找到“源文件”,然后右键——>添加文件,找到你的 C++ 文件,添加进去之后就可以编译了
  • 使用 cscope浏览 C++文件

    千次阅读 2015-08-21 02:26:08
    但是也可以查看C++文件。方法如下: find . -name "*.h" -o -name "*.c" -o -name "*.cc" -name "*.cpp" > cscope.files cscope -bkq -i cscope.files ctags -R 需要注意的是,不能使用 "c f s"查找 c++文件里...
  • C/C++文件输入输出(详细介绍)

    万次阅读 多人点赞 2018-10-28 09:39:20
    文件I/O也称为读文件(输入)和写文件(输出),c++标准库中提供两个类ifstream和ofstream,分别用于文件的输入和输出。 一.文件的写操作: 写操作对应的有:、put、write 等,我们来看下他们分别都能实现什么样的写...
  • 为什么需要解读gcc/g++编译器对c/c++文件的影响呢?由于系统内核一般是使用C语言来编写的,系统内核中用C语言实现了很多库。而上层应用程序有可能是用C++来开发,如果在内核库函数头文件中不用extern“C”来声明...
  • 在Linux中如何运行c++文件

    千次阅读 2019-04-19 11:33:42
    在Linux中如何运行c++文件 首先安装必要的工具和编译器来运行代码。 gcc(GNU编译器套件)简介: GNU编译器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,也包括了这些...
  • C/C++文件剪切复制删除

    千次阅读 2017-01-20 23:06:22
    C/C++文件剪切复制删除
  • VS code 运行C/C++文件

    千次阅读 多人点赞 2019-07-05 21:09:25
    VS code 运行C/C++文件 搞了一下午,搞得头疼,网上的教程五花八门,奈何VS code版本更新太快,于是.....就出现了各种bug,就很难受,不过最终终于成功啦,所以做一个简短的小结,防止自己以后再装就忘了= = 第一...
  • 本篇文章,主要参考AndroidStudio 编译C/C++文件生成SO文件,但是在学习过程中还是出现了不少问题,所以详细记录一下操作过程。 一、AndroidStudio的NDK下载: 通过file----->settings进行下载: 二、新建一个...
  • iOS开发中OC调用C++文件

    千次阅读 2017-10-23 14:37:21
    1.创建c++文件这时候生成了两个文件 2.在hpp中定义C++类和方法#ifndef JH_AR_hpp #define JH_AR_hpp #include class MyCppClass{ public : static void ShowMsg(const char *); }; class GetDotClass{ ...
  • Android - JNI添加标准C++文件

    千次阅读 2014-09-04 09:54:20
    JNI添加标准C++文件本文地址: http://blog.csdn.net/caroline_wendy其余参考: http://blog.csdn.net/caroline_wendy/article/details/39032551如果需要调用标准C++库, 则需要在jni文件夹下, 添加Application.mk...
  • 使用Vscode编辑器创建C++文件模板

    千次阅读 2019-09-06 22:10:06
    1.使用vscode创建c++文件模板的步骤如下,点击文件->首选项->用户代码片段 2.选择cpp 3.将代码改写成如下,保存即可 { // Place your snippets for cpp here. Each snippet is defined under a snippet ...
  • 使用C++文件流库fstream,以字符串形式读取十六进制文本文件的内容,将这些十六进制数据转换为int型数据,并分类存储
  • Linux命令行编译执行C/C++文件

    千次阅读 2018-02-04 01:40:57
    gcc是常用的Linux系统下的编译工具...针对编写好的C/C++文件:test.c, 具体示例如下: $gcc -o test test.c 编译后,在当前路径下生成一个可执行文件test, 然后输入: $./hello 此时可以看到test.c的程序输出结果
  • Eclipse打开C/C++文件报错问题

    千次阅读 2015-03-31 13:34:32
    Eclipse打开C/C++文件报错 若配置完NDK后打开C/C++代码不幸的出现各种红点,各种符号,各种下划线,可用下面提供的两种方案试试 1.右键点击工程,在工程 Properties 页面-> C/C++ General -> ...
  • C++文件读写操作(一)将字母表写入TXT文本文件  C++文件读写操作(二)逐字符读取文本和逐行读取文本  C++文件读写操作(三)如何统计文本的行数及如何读取文件某一行内容  C++文件读写操作(四...
  • C++文件操作无法写入的问题

    千次阅读 2016-08-13 00:47:40
    今天测试C++文件操作时,始终无法将数据写入文件中,百思不得其解,最后发现文件操作完成后一定要将文件关闭,即调用close()函数。 #include #include #include using namespace std;int main(){/*fstream file1;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,817
精华内容 55,526
关键字:

c++文件

c++ 订阅