kon*_*jac 3 c++ iterator stl stdstring istream-iterator
鉴于这样的代码段:
#include <iostream>
#include <iterator>
#include <fstream>
#include <string>
using namespace std;
int main(){
ifstream file("1.txt");
string str((istream_iterator<char>(file)),istream_iterator<char>());
file.close();
cout<<str<<endl;
}
Run Code Online (Sandbox Code Playgroud)
该代码使用istream_iterator从文件构造一个字符串.
请注意,字符串构造函数的第一个参数用一对括号括起来.如果省略括号,则会出错.在VC++ 2008中,会出现链接错误.在G ++中,代码输出错误.
我对括号感到很奇怪.有什么区别,为什么?
如果没有"额外"的括号,你会得到C++"最让人头疼的解析" -而不是定义命名的对象str有两个istream_iterators指定其初始化,它解析为一个命名函数的声明,str即返回string,而'东西’在括号中指定它所采用的参数类型.
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |