程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 讀取文件內容到並保存到string中

讀取文件內容到並保存到string中

編輯:C++入門知識

(最近在調整生物鐘,晚上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();
}

 

 


運行結果:
(為了方便顯示,這裡打開的是一個很小的文件。)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved