首页 > 其它语言 > 读取文件内容到并保存到string中

读取文件内容到并保存到string中

(最近在调整生物钟,晚上9点半前睡觉,早晨很早就醒了,利用早晨充足的时间可以读英语和写代码,感觉很好。)
不知道你是否考虑过这个问题:std::string究竟可以存储多大的字符串呢?
理论上std::string可以存储 std::string::max_size大小的内容。
我在Visual studio 2008上运行的结果是:max_size:4294967291
#include <iostream>     // std::cout
#include <fstream>      // std::ifstream
#include <string>
using namespace std;
bool readFileToString(string file_name, string& fileData)
{
    ifstream file(file_name.c_str(),  std::ifstream::binary);
    if(file)
    {
        // Calculate the file's size, and allocate a buffer of that size.
        file.seekg(0, file.end);
        const int file_size = file.tellg();
        char* file_buf = new char [file_size+1];
        //make sure the end tag \0 of string.
        memset(file_buf, 0, file_size+1);
        // Read the entire file into the buffer.
        file.seekg(0, ios::beg);
        file.read(file_buf, file_size);
        if(file)
        {
            fileData.append(file_buf);
        }
        else
        {
            std::cout << "error: only " <<  file.gcount() << " could be read";
            fileData.append(file_buf);
            return false;
        }
        file.close();
        delete []file_buf;
    }
    else
    {
        return false;
    }
    return true;
}
int main()
{
    string data;
    if(readFileToString("d:/Test.txt", data))
    {
        cout<<"File data is:\r\n"<<data<<endl;
    }
    else
    {
        cout<<"Failed to open the file, please check the file path."<<endl;
    }
    cout << "size: " <<  data.size() << "\n";
    cout << "length: " <<  data.length() << "\n";
    cout << "capacity: " <<  data.capacity() << "\n";
    cout << "max_size: " <<  data.max_size() << "\n";
    getchar();
}
运行结果:
(为了方便显示,这里打开的是一个很小的文件。)

本文固定链接: http://www.devba.com/index.php/archives/1162.html | 开发吧

报歉!评论已关闭.