将整个ASCII文件读入C+std:string我需要将整个文件读入内存,并将其放入C+中。std::string.如果我把它读成char[]答案很简单:std::ifstream t;int length;t.open("file.txt"); // open input filet.seekg(0, std::ios::end); // go to the endlength = t.tellg(); // report location (this is the length)t.seekg(0, std::ios::beg); // go back to the beginningbuffer = new char[length]; // allocate memory for a buffer of appropriate dimensiont.read(buffer, length); // read the whole file into the buffert.close(); // close file handle// ... Do stuff with buffer here ...现在,我想做同样的事情,但是使用std::string而不是char[]..我想避免循环,也就是说,我别想:std::ifstream t;t.open("file.txt");std::string buffer;std::string line;while(t){std::getline(t, line);// ... Append line to buffer and go on}t.close()有什么想法吗?
3 回答
三国纷争
TA贡献1804条经验 获得超7个赞
std::ifstream t("file.txt");std::stringstream buffer;buffer << t.rdbuf();
buffer.str()
.
std::ifstream t("file.txt");t.seekg(0, std::ios::end);size_t size = t.tellg();std::string buffer(size, ' ');t.seekg(0);t.read(&buffer[0], size);
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
#include <fstream>#include <iostream>#include <sstream> //std::stringstreammain(){ std::ifstream inFile; inFile.open("inFileName"); //open the input file std::stringstream strStream; strStream << inFile.rdbuf(); //read the file std::string str = strStream.str(); //str holds the content of the file std::cout << str << std::endl; //you can do anything with the string!!!}
- 3 回答
- 0 关注
- 695 浏览
添加回答
举报
0/150
提交
取消