错误无效的用户定义转换

Error invalid user define conversion

本文关键字:定义 转换 用户 无效 错误      更新时间:2023-10-16
#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) ^

我做错了什么?

std::getline返回一个std::basic_istream&。它将读取到的内容写入您传入的linestrcmp占用两个const char*。您不能仅仅将第一个类型的结果传递给第二个类型——这些类型是不可转换的(因此出现了没有从std::basic_istream<char>转换到const char*的错误)。

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

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

你做错的是你正在传递一个istream (getline的返回值)给strcmp,它期望一个char*