软件开发: 01 2007存档
ifstream stream("log.conf");
char buffer[1024];
while(stream.good())
{
stream.getline(buffer,sizeof(buffer));
//some process about buffer
这段代码害我不浅:当被读文件的一行大于1024字节时,stream不再good,导致循环退出,后面的行再也不会读到了!
正确的应该这样,以避免有行长度的限制:
string line;
while(getline(stream,line))
{
//some process about line
STL库居然有两个getline,一个是fstream的成员函数,另一个是全局函数(没有行长度限制),岂不气刹人也么哥!
c++中成员函数的指针:
class Math这段代码是没什么问题的,即使在 gcc-2.95.4上都能编译。
{
public:
double mul(int a, int b)
{
return a/(double)b;
}
};
int main(void)
{
typedef double(Math::*MFPointer)(int,int);
MFPointer mp=&Math::mul;
Math math;
(math.*mp)(3,277);
}
但是,如果想把成员变量指针放入STL的容器(比如vector)里,gcc-2.95.4就编不过去了,说是STL里面拿address的时候晕倒,没办法拿。想用void*
真是有够老土的。