发现一个使用std::getline()的问题.程序如下
#include <iostream>
#include <string>
#include <fstream>
#include <windows.h>
using namespace std;


void main()
{
    string filename = "FIHPoints.csv"; //This file is very large >2MB
    ifstream ifs( filename.c_str() );    
    if ( ifs.is_open() == false ) 
    {
        printf("Open file false \n");
        ExitProcess(0);
    }     
    
    //---> Get file size
    ULONG size;
    ifs.seekg(0, std::ios::end);      
    streampos ps = ifs.tellg();  
    ifs.seekg(0, std::ios::beg);      
    size=ps;

    //-->Read file
    string str;        
    //str.resize(size);  请尝试有这条命令和无这条命令时内存的使用区别.
    getline(ifs ,str ,'!');  
    //no '!' in file, so getline will read all the file in one time
    cout<<str<<endl;
    system("Pause");    
}

如果getline读一个很大的文件的话,会花费很多内存.
文件2MB, 则需要12MB来执行这个程序,而且读取的时间相当长.
但是如果多加一条命令,则没有内存过大的问题.

有高手可以解释吗>