• 文件操作(输出倒数第二行、逆序输出)


    1.输出倒数第二行
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    #include <fstream>

    using namespace std;
    int main(){
        //cin.imbue(locale("chs"));
        cout.imbue(locale("chs"));//控制台输出中文
        int i,len=1;
        char ch=NULL;
        ifstream infile("aaa.txt");
        while(ch!=EOF){        
            ch=infile.get();
            if(ch==' '){
                len++;//判断有几行,当然也可用getline来判断
            }
        }
        cout<<len<<endl;
        infile.close();
        infile.open("aaa.txt");//需要重新打开文件,否则指针已到文件末尾
        string temp;
        for(i=0;i<len-1;i++){//输出倒数第2行
            getline(infile,temp,' ');
        }

        cout<<temp<<endl;
        

        system("pause");
        return 0;
    }

    2.逆序输出
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    #include <fstream>

    using namespace std;
    int main(){
        //cin.imbue(locale("chs"));
        cout.imbue(locale("chs"));//控制台输出中文
        int i=0,len=0,j=0;//j用于计数
        char ch=NULL,chs[2];//chs[]数组用于保存中文
        ifstream infile("aaa.txt",ios::binary);//以二进制打开文件,否则计算文件长度会有问题

    //以二进制打开, 它与文本格式的差别在于,文本格式会增加一些格式上的信息,比如换行' '用文本输出是两个字节0x0Ah,0x0Dh. 而如用二进制输出则是0x0Ah


        while(ch!=EOF){        
            ch=infile.get();

                len++;
        }
        infile.close();
        infile.open("aaa.txt",ios::binary);
      

      for(i=1;i<=len;i++){
        infile.seekg(-i,ios::end);
        ch=infile.get();//如果文件里面包含中文,则输出是乱码,为啥?显而易见,如:ch[0]+ch[1]='中' ,ch[1]+ch[0]=毛线啊。。。

        //下面判断是否是中文,中文的ascii码是大于127的
        if(ch&0x80){
                  chs[j]=ch;
                  j++;
                  if(j==2){
                      cout<<chs[1]<<chs[0];
                      j=0;
                  }
             }else{
                  j=0;
                  cout<<ch;
             }
      }

        system("pause");
        return 0;
    }

  • 相关阅读:
    差一个引号的崩溃
    js中.toString()和String()的一丢丢区别
    PC端和手机端页面的一丢丢区别
    LINQ踩坑记录
    C# list group分组扩展,方法来源网络记录备忘
    NPOI分批读取数据
    Xamarin开发登录示例
    动态创建匿名对象利用表达式树动态构建分组条件
    安卓H5互调笔记
    WPF学习6
  • 原文地址:https://www.cnblogs.com/duyy/p/3714168.html
Copyright © 2020-2023  润新知