C++ 读取文件所有内容的方法
方法一
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
ifstream ifs("test.txt");
string content( (istreambuf_iterator<char>(ifs) ),
(istreambuf_iterator<char>() ) );
cout << content << endl;
ifs.close();
return 0;
}
方法二
#include <fstream>
#include <vector>
using namespace std;
int main(int argc, char** argv) {
ifstream ifs("test.txt");
// get the size of file
ifs.seekg(0, ios::end);
streampos length = ifs.tellg();
ifs.seekg(0, ios::beg);
vector<char> buffer(length);
if (ifs.read(buffer.data(), length)) {
// process
ofstream out("output.txt");
out.write(buffer.data(), length);
out.close();
}
ifs.close();
return 0;
}
方法三
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
int main(int argc, char** argv) {
std::ifstream t("file.txt");
std::stringstream buffer;
buffer << t.rdbuf();
std::string contents(buffer.str());
// process
t.close();
return 0;
}
读取一个string
std::ifstream in("some.file");
std::string some_str;
in >> some_str;
这种方法的问题在于,遇到回车空格等分隔符的时候,就不会再读取了。
读取文件全部内容
iostream著名专家Dietmar Kuehl给出了两个读取方法
std::ifstream in("some.file");
std::isreambuf_iterator
std::isreambuf_iterator
std::string some_str(begin, end);
或
std::ifstream in("some.file");
std::ostringstream tmp;
tmp << in.rdbuf();
std::string str = tmp.str();
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 查询128 IP查询