错误无效的用户定义转换

时间:2015-09-28 21:11:36

标签: c++ io compiler-errors

#include <iostream>
#include <sstream>
#include <fstream>
#include <string.h>

using namespace std;

int main(int argc, char* argv[])
{
    if(argc != 3)
    cout<< "Error! Not enough file!"<<endl;
char** words = new char* [10];
char** page = new char* [10];
string line;
char* key = "<-1>";
ifstream input (argv[1]);
while(strcmp(std::getline(input, line), key) != 0)
{

}
return 0;
}

所以当我尝试运行时(当然没有完成)。编译器不断给出错误

/home/ds/DataStructuresRepo/Project2/untitled/main.cpp:17: error: invalid user-defined conversion from 'std::basic_istream<char>' to 'const char*' [-fpermissive] while(strcmp(std::getline(input, line), key) != 0) ^

我做错了什么?

2 个答案:

答案 0 :(得分:1)

std::getline返回std::basic_istream&。它将所读内容写入您传入的linestrcmp需要两个const char*。您不能只将第一个结果传递给第二个 - 这些类型不可转换(因此没有从std::basic_istream<char>转换为const char*的错误)。

既然你得到std::string,你可以直接使用它operator==

while (std::getline(input, line) && line != key)
{
}

答案 1 :(得分:0)

您做错了的是,您将istreamgetline的返回值)传递给strcmpchar*期待{{1}}