c++中ifstream的问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 18:51:15
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

class CNode
{
private:
int m_nData;
int m_nNum;
public:
CNode( int n = 0 ):m_nData(0),m_nNum(1)
{
}
~CNode(){}
bool operator == ( const CNode &node )
{
return m_nData == node.m_nData;
}
const int GetData() const { return m_nData; }
const int GetNum() const { return m_nNum; }
void AddNum(){ ++m_nNum; }
friend ifstream& operator >> ( ifstream& ifs, CNode &node );

};
ifstream& operator >> ( ifstream& ifs,CNode &node )
{
ifs>>node.m_nData;
return ifs;
}
ostream& operator << ( ostream& os,const CNode &node )
{
os<<node.GetData()<<":"<<node.GetNum()<<endl;
return os;
}
int main()
{
if

这个程序出自哥们的手笔,有一个问题没有考虑到,修改一个地方就可以解决了。

while( !ifs.eof() )
{
ifs>>tmp;
if( ifs.fail() ) //就这里
break;
vector<CNode>::iterator pos = find( myVec.begin(),myVec.end(),tmp );
if( pos != myVec.end() ) //已经存在
{
pos->AddNum();
}
else
myVec.push_back(tmp);
}

至于楼上所说的,我是在看不到在哪儿。

另外透露点消息给楼主,换一个容器换一种方式可能会让你大大的加速哦,特别是处理的数据很多的时候,这种方法其实效率一般,不过对付少量数据是游刃有余的,对付大量数据的话,那就另外想办法吧。嘿嘿。

这个程序本身就有问题,你确定你的程序能运行吗?不是己经有接口了,怎么还直接访问私有数据呢?

好难 我不会啊