c++中ifstream一次读取整个文件

c++中一次读取整个文件的内容的方法:

  1. 读取至char*的情况
std::ifstream t;  
int length;  
t.open("file.txt");      // open input file  
t.seekg(0, std::ios::end);    // go to the end  
length = t.tellg();           // report location (this is the length)  
t.seekg(0, std::ios::beg);    // go back to the beginning  
buffer = new char[length];    // allocate memory for a buffer of appropriate dimension  
t.read(buffer, length);       // read the whole file into the buffer  
t.close();                    // close file handle  
  
// ... do stuff with buffer here ...  
  1. 读取至std::string的情况:

第一种方法:

#include <string>  
#include <fstream>  
#include <streambuf>  
  
std::ifstream t("file.txt");  
std::string str((std::istreambuf_iterator<char>(t)),  
                 std::istreambuf_iterator<char>()); 

第二种方法:

#include <string>  
#include <fstream>  
#include <sstream>  
std::ifstream t("file.txt");  
std::stringstream buffer;  
buffer << t.rdbuf();  
std::string contents(buffer.str());

reference

http://stackoverflow.com/questions/2602013/read-whole-ascii-file-into-c-stdstring

本文出自夜惊心的博客,转载请保留出处

posted @   小 楼 一 夜 听 春 雨  阅读(79733)  评论(2编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示