(最近在調整生物鐘,晚上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();
}
運行結果:
(為了方便顯示,這裡打開的是一個很小的文件。)