Pink_Piggy 2021-08-10 10:08 采纳率: 100%
浏览 71
已结题

用ifstream读取文件中的内容然后保存到了字符串buff中,但是打印buff之后后面出现了别的东西,不知道为啥子

        string filename;
        cout << "请输入文件名字:";
        cin >> filename;
        ifstream t;
        
        int size;
        t.open(filename);
        t.seekg(0, ios::end);
        size = t.tellg();
        t.seekg(0, ios::beg);
        char* buffer = new char[size+1];
        t.read(buffer, size);
        t.close();

        string buff = buffer;
        
        cout << "....." << endl;
        cout << buff << endl;
        cout << "....." << endl;

下面是运行的结果,为啥子后面会多了乱七八糟的东西

img

下面是文件information.txt中的内容

img

  • 写回答

5条回答 默认 最新

  • codeaftercode 2021-08-10 10:15
    关注

    我猜文件最后一行没有回车换行符。cout<<buff的时候是要一直输出到发现\0的,所以应在string buff = buffer;之前,将buffer最后一个字节变成\0:

            string filename;
            cout << "请输入文件名字:";
            cin >> filename;
            ifstream t;
            int size;
            t.open(filename);
            t.seekg(0, ios::end);
            size = t.tellg();
            t.seekg(0, ios::beg);
            char* buffer = new char[size+1];
            t.read(buffer, size);
            t.close();
    
            buffer[size]='\0';
            string buff = buffer;
            cout << "....." << endl;
            cout << buff << endl;
            cout << "....." << endl;
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月18日
  • 已采纳回答 8月10日
  • 创建了问题 8月10日

悬赏问题

  • ¥50 我撰写的python爬虫爬不了 要爬的网址有反爬机制
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法