首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么getline()不接受函数形参定义的ifstream对象解决办法

2012-05-22 
为什么getline()不接受函数形参定义的ifstream对象今天早上明明充满激情的可是书上的例子在我的vs2010都错

为什么getline()不接受函数形参定义的ifstream对象
今天早上明明充满激情的 可是书上的例子在我的vs2010都错了 就是搞不懂 烦死了
c++ primer 第330页的一个函数
void TextQuery::store_file(ifstream &is)
{
  string textline;
//声明一个ifstream对象
//ifsream infile;
  while (getline(is, textline)//这里的getline()错误 ,如果用在函数体里声明的infile则没有错误
  { //这是怎么回事啊
  ......
  }
}


[解决办法]
while (getline(is, textline))//少了个) ,括号不匹配?
{
...
}
[解决办法]
虽然没有vs2010但是错误不应该是这里
[解决办法]
看看具体错误什么啊
[解决办法]
原来的程序发上来吧.
还有报错.
[解决办法]
f11跟进去
[解决办法]

探讨
TextQuery是一个类
store_file()是类里面声明的一个成员函数 我在类外定义
另外错误我找到了 到不知道是不是这个原因出错的
就是std::ifstream &is
可是书上没加 std:: 的啊
难道在类外定义的函数里的类型也要加上作用域吗

[解决办法]
如果前面有using namespace std;那么就不用加
[解决办法]
探讨
引用:

如果前面有using namespace std;那么就不用加

恩呢 ,string也没加照样用呢

[解决办法]
探讨
为什么会这样呢 , 谁能解释下, 还是这就是规定呀, 可书上都不加std::的

[解决办法]
探讨
引用:

引用:
引用:

如果前面有using namespace std;那么就不用加

恩呢 ,string也没加照样用呢

你是分头文件中没加?还是重名了?

只是定义类的那个头文件没加using namespace std; (书上说的不要在类头文件中加这句的)
别处都加上的;

[解决办法]
是你引用了 c的stdio里的 getline;

一般stdio里的getline 是 fgets(stdin)的定义宏,不需要参数,所以编译出错.
[解决办法]
探讨

只是定义类的那个头文件没加using namespace std; (书上说的不要在类头文件中加这句的)
别处都加上的;

热点排行