主题:[讨论]std::getline() 问题
发现一个使用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来执行这个程序,而且读取的时间相当长.
但是如果多加一条命令,则没有内存过大的问题.
有高手可以解释吗>
#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来执行这个程序,而且读取的时间相当长.
但是如果多加一条命令,则没有内存过大的问题.
有高手可以解释吗>