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

2014-11-24 00:59:34 · 作者: · 浏览: 2

(最近在调整生物钟,晚上9点半前睡觉,早晨很早就醒了,利用早晨充足的时间可以读英语和写代码,感觉很好。)
不知道你是否考虑过这个问题:std::string究竟可以存储多大的字符串呢?
理论上std::string可以存储 std::string::max_size大小的内容。
我在Visual studio 2008上运行的结果是:max_size:4294967291

#include // std::cout
#include // std::ifstream
#include


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"< }
else
{
cout<<"Failed to open the file, please check the file path."< }


cout << "size: " << data.size() << "\n";
cout << "length: " << data.length() << "\n";
cout << "capacity: " << data.capacity() << "\n";
cout << "max_size: " << data.max_size() << "\n";


getchar();
}


运行结果:
(为了方便显示,这里打开的是一个很小的文件。)