#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)
^
我做错了什么?
答案 0 :(得分:1)
std::getline
返回std::basic_istream&
。它将所读内容写入您传入的line
。strcmp
需要两个const char*
。您不能只将第一个结果传递给第二个 - 这些类型不可转换(因此没有从std::basic_istream<char>
转换为const char*
的错误)。
既然你得到std::string
,你可以直接使用它operator==
:
while (std::getline(input, line) && line != key)
{
}
答案 1 :(得分:0)
您做错了的是,您将istream
(getline
的返回值)传递给strcmp
,char*
期待{{1}}