是否有一个单行程序在文件中读取C++中的字符串?

rob*_*bor 8 c++ filesystems file

我需要一种快速简便的方法来从标准C++中的文件中获取字符串.我可以编写自己的,但只是想知道C++中是否已有标准方法.

如果你知道Cocoa就相当于:

NSString *string = [NSString stringWithContentsOfFile:file];
Run Code Online (Sandbox Code Playgroud)

Rex*_*xar 17

我们可以做到,但这是一个很长的路线:

#include<fstream>
#include<iostream>
#include<iterator>
#include<string>

using namespace std;

int main()
{
    // The one-liner
    string fileContents(istreambuf_iterator<char>(ifstream("filename.txt")), istreambuf_iterator<char>());

    // Check result
    cout << fileContents;
}
Run Code Online (Sandbox Code Playgroud)

编辑:使用"istreambuf_iterator"而不是"istream_iterator"

  • @Doug T:在评估分号之前的完整表达式后,临时对象被销毁. (2认同)

Dou*_* T. 10

几乎可以使用istream_iterator(3行!)

#include <iostream>
#include <fstream>
#include <iterator>
#include <string>
#include <sstream>

using namespace std;

int main()
{
    ifstream file("filename.txt");
    string fileContents;

    copy(istreambuf_iterator<char>(file),
              istreambuf_iterator<char>(),
              back_inserter(fileContents));
}
Run Code Online (Sandbox Code Playgroud)

编辑 - 摆脱中间字符串流,现在直接复制到字符串,现在使用istreambuf_iterator,忽略空格(感谢Martin York的评论).