[C++] ファイルを読み込んでstd::stringを得る

テキストファイルからstd::stringを得るコードです。
ファイルサイズ分のメモリを一度に確保するので大きなサイズのファイルの読み込みには向きません。


#include <iostream>
#include <fstream>
#include <vector>

std::string getStringFromFile(const std::string& filePath) {
    
    std::ifstream ifs(filePath, std::ios::binary);
    
    // ファイルサイズを得る
    ifs.seekg(0, std::ios::end);
    size_t sz = ifs.tellg();
    ifs.seekg(0, std::ios::beg);
    
    //ファイルサイズ分ファイルから読み込む
    std::vector<char> buf(sz);
    ifs.read(buf.data(), sz);
    
    //読み込んだcharデータからstringを作成
    return std::string(buf.data(), sz);
}

int main() {
    
    std::string str = getStringFromFile("/var/tmp/note.txt");    
    std::cout << str << std::endl;
}

出力結果

$ echo "こんにちは、世界!" >> /var/tmp/note.txt
$ ./GetStrigFromFile
こんにちは、世界!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です