首页 > 编程语言 >c++如何读取txt文件内容

c++如何读取txt文件内容

时间:2023-10-08 13:11:42浏览次数:38  
标签:文件 读取 c++ C++ 字符串 txt DEV string

一、c++文件流:

  fstream   //文件流

  ifstream  //输入文件流

  ofstream  //输出文件流

 

二、文件路径的表示

  1、绝对路径:inf.open("d://DEV_C++//LogFile//游泳数据//LUYINGYAN1039_SensorLog.txt");    注意:双斜线"\\"

 

  2、相对路径:对相对路径而言,路径表示中的“\”也要用双斜线"\\"  

    windows下表示相对路径的规则为:
                                                                  .\ 或 ./ 表示当前目录,或同级目录; 2、..\ 或 ../ 表示父目录,或上级目录。

三、文件打开方式

  1、ios::in //供读,文件不存在则创建(ifstream默认的打开方式)
  2、ios::out //供写,文件不存在则创建,文件存在则清空原内容(ofstream默认打开方式)

  3、ios::ate //文件打开时,指针指在文件最后,常和in、out联合使用

  4、ios::app //供写,文件不存在则创建,在原文件内容后写入新的内容,指针位置总在最后

  5、ios::binary //二进制格式文件

四、示例代码

//实现txt文件的读入并重写入另外一个txt文件中~
#include<fstream>  //ifstream
#include<iostream>
#include<string>     //包含getline()
//#include<cmath>
using namespace std;
 
int main(){
    string s;
    string tmp;
    string result;
    ofstream outf;//文件写操作 
    ifstream inf;//文件读操作
     
    //这里路劲是://  双斜杠
    //inf.open("d://DEV_C++//LogFile//快走300//原始log//202308211452_mayanjun_upstair100_6.txt");         
    //inf.open("d://DEV_C++//LogFile//串口log//MobaXterm_warth_9_301_20230919_161009.txt");   
    inf.open("d://DEV_C++//LogFile//游泳数据//LUYINGYAN1039_SensorLog.txt");         
    
    //创建输出文件
    outf.open("d://DEV_C++//out.txt"); 
    
    cout << "开始提取日志数据:" << endl;
    int times=0;
    
    while (getline(inf, s))      //getline(inf,s)是逐行读取inf中的文件信息
    {    
        int idx=s.find(",1,");
        //cout << idx << endl;
        //int num=s.find(";");
        int num=s.find(" ");
        
        if(idx != -1 && num != -1)
        {
            //int num=s.find(";");
            //cout << num << endl;
            
            tmp = s.substr(idx+3,num-(idx+3));
            //cout << tmp << endl;
            
            tmp.insert(0,"{");
            tmp.append("},");
        
            times++;
            if(times%2)
                cout << endl;//数据太多打印不全,打印两次才换行 
            cout << tmp;
                                
            outf << tmp << '\n';//向创建的输出文件里写入数据 
        }
    }
    cout << endl << times << endl;
    if(times)
        cout << endl << endl << "提取日志数据已输出到 d://DEV_C++//out.txt" << endl;
    else
        cout << endl << "数据提取错误!" << endl; 
    //tmp.erase(tmp.end()-1);//删除字符串末尾一个字符   
    
    inf.close();
    outf.close();
    return 0;
}

如上示例代码将如下右边格式提取为如下左边格式,并输出为out.txt文件:

          

      如需在文件后面续写数据,如下:

      

五、C++下string基本操作

  作者: KeepLiang

  如下内容摘自链接:C++之string基本操作_stirng只提供尾部弹出-CSDN博客如有侵权请告知。
  来源:CSDN
  著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 1、构造函数:

   string有重载了非常多构造函数,这里就只列出比较常用的:

    

 2、增:

    string的增非常简单,因为string重载了"+","+="操作符,可以方便地对字符串进行添加,而成员函数:insert(),append(),push_back()

    +=:+=操作符是string类之间的添加。

     

   append:

    

     append是把参数添加至字符串的尾部,参数字符串可以是string,也可以是c_str,在参数字符串的后面可以参数字符串的起始位置和结束位置。总结为:append(string,[start,end))。

  push_back:

    

     push_back()可以在string的后面添加一个字符

  insert:

    

     insert可以指定位置在目标string中插入。

 3、删:

  erase:

    

   pop_back:

    

   clear:

    

 3、改:

   replace:

    

     总结:replace( [ start, end ),"用于替换的字符串",[ start, end ) ),即可以指定被替换的字符串区间和用于替换的字符串区间。

 4、查:

   at:

    

   find:

    string类提供的find成员函数可以查找字符或者字符串位置,凡是没有找到的均返回string::npos,该值定义为-1。

    

 5、切割字符串:

  substr:

     

 6、字符串和数字转换:

    

 

标签:文件,读取,c++,C++,字符串,txt,DEV,string
From: https://www.cnblogs.com/gengtongyu/p/17748609.html

相关文章

  • DEV_C++新建项目及多线程实现
    一、单个C++程序(多线程)//实现txt文件的读入并重写入另外一个txt文件中~#include<fstream>//ifstream#include<iostream>#include<string>//包含getline()#include<string.h>#include<pthread.h>#include<windows.h>//#include<cmath>usin......
  • 基于 Linux、C++实现的高性能内存池
    1.引入内存池的意义  内存池(MemoryPool)是一种内存分配方式,又被称为固定大小区块规划(fixed-size-blocksallocation)。通常我们习惯直接使用new、malloc等API申请分配内存,但是这种方式非常容易产生内存碎片,早晚都会申请内存失败。并且在比较复杂的代码或者继承的屎山......
  • 如何使用Visual Studio Code运行C/C++程序
    与VisualStudio2008/2010…集成开发工具不同,VisualStudioCode只是一个代码编辑器。在Windows环境下,需下载安装C/C++编译器,配置环境等,VSCode才可以编译代码和运行程序。1.下载安装编译器MinGW(Minimalist GNUfor Windows),又称mingw32,是一种编译器,可以用来编译和运行C语言......
  • C++ Benchmark tool library
     C++Benchmarktoollibrary存在哪些c++Benchmark库呢,通过google搜索和github搜索,列出如下Benchmarklibrary名称 简介 源码地址google/benchmark Amicrobenchmarksupportlibrary https://github.com/google/benchmarkCelero C++BenchmarkAuthoringLibrary/Framework......
  • Effective C++——Item33: 避免隐藏继承的名字
    EffectiveC++——Item33:避免隐藏继承的名字一、从原理理解隐藏从变量作用域看隐藏全局变量x和局部变量x的类型是不同的,但C++的隐藏规则:只隐藏名字(hidingnames)。intx;//globalvariablevoidsomeFunc(){doublex;/......
  • [20230922]dc命令复杂学习3.txt
    [20230922]dc命令复杂学习3.txt1.问题提出:--//前一段时间简单学习了dc,累加的例子:$cata.txt1111222233334444$cata.txt|dc-f--e"[+z1<r]srz1<rp"11110$dc-fa.txt-e"[+z1<r]srz1<rp"11110--//实际上如果累加数据量很大,这样的执行效率很低的,因为每次都要判断堆......
  • Python 图片管理工具介绍(筛像素+从文件夹取出图片并放到文件夹内+excel读取)
    功能介绍:这是一个Python脚本工具,用于批量管理和复制图片。其主要功能如下:从Excel表格读取数据:程序使用openpyxl库从Excel文件中读取数据,其中A列包含源图片的路径(可以有多个路径,用逗号分隔),B列包含目标目录。图片筛选:仅复制最小维度大于800像素的图片,这可以确保目标目录中的......
  • VBA读取ini配置相对应的内容
    PrivateDeclareFunctionGetPrivateProfileStringLib"kernel32"Alias"GetPrivateProfileStringA"(ByVallpApplicationNameAsString,ByVallpKeyNameAsString,ByVallpDefaultAsString,ByVallpReturnedStringAsString,ByValnSizeAs......
  • VBA读取文本文件内容
    FunctionReadText(FileNameAsString)AsStringWithCreateObject("ADODB.Stream").Type=2.Mode=3.Open.LoadFromFileFileName.Charset="UTF-8"'根据需要也可以选择Unicode.Position......
  • Flask审计+Nginx读取
    来自:[SUCTF2019]Pythonginx打开还是源码,直接审计:fromflaskimportFlask,Blueprint,request,Response,escape,render_templatefromurllib.parseimporturlsplit,urlunsplit,unquotefromurllibimportparseimporturllib.requestapp=Flask(__name__)#In......