Yan*_*ang 1 c++ string iterator istream-iterator
在尝试编译以下内容时:
#include <string>
#include <iterator>
#include <iostream>
using namespace std;
int main() {
string s(istream_iterator<char>(cin), istream_iterator<char>());
return s.size();
}
Run Code Online (Sandbox Code Playgroud)
g ++ 4.4.1给了我:
main.cc: In function ‘int main()’:
main.cc:6: error: request for member ‘size’ in ‘s’, which is of non-class type ‘std::string(std::istream_iterator<char, char, std::char_traits<char>, int>, std::istream_iterator<char, char, std::char_traits<char>, int> (*)())’
Run Code Online (Sandbox Code Playgroud)
根据libstdc ++ docs,string有一个ctor,它接受一个开始/结束迭代器对.为什么我会收到此错误?
您不小心声明了一个函数而不是实例化一个字符串.尝试为istream_iterator对象声明变量,然后将它们传递给std :: string构造函数.
这是一本很好的读物,它描述了你的问题:http://www.gotw.ca/gotw/075.htm
| 归档时间: |
|
| 查看次数: |
1623 次 |
| 最近记录: |