2014-12-31 53 views
0

我搜索互联网和阅读了几个小时的手册,但我想不通这一个:C++函数getline合格文件或CIN

我的程序得到一个可选的参数,它是文件名。考虑这个条件

std::ifstream file; 

if (argc > 1) { 
    file.open(argv[1]); 
} 

if (file.is_open()) { 
    processInput(file); 
    file.close(); 
} else { 
    processInput(std::cin); 
} 

在功能processInput我试图读取输入的所有线路,并与他们做这样的事情:

void processInput(std::basic_istream<char> inputStream) { 
    std::string line; 
    while (std::getline(inputStream, line)) { 
     processLine(line); 
    } 
} 

,但我发现在basic_istream一个错误,所以我我没有任何线索应该传递给这个函数。我只尝试了盲注。

+1

_“我在'basic_istream'得到一个错误” _ - 请修改您的帖子并包含您收到的_exact_错误。 –

回答

7

流不可复制。你必须通过引用传递流:

//           v-- here 
void processInput(std::basic_istream<char> &inputStream) { 

顺便说一句,有写std::basic_istream<char>较短的方式,这是

void processInput(std::istream &inputStream) {