错误无效的用户定义转换
Error invalid user define conversion
#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&
。它将读取到的内容写入您传入的line
。strcmp
占用两个const char*
。您不能仅仅将第一个类型的结果传递给第二个类型——这些类型是不可转换的(因此出现了没有从std::basic_istream<char>
转换到const char*
的错误)。
既然你得到了std::string
,你可以直接使用它的operator==
:
while (std::getline(input, line) && line != key)
{
}
你做错的是你正在传递一个istream
(getline
的返回值)给strcmp
,它期望一个char*
。
相关文章:
- 仅为某些模板专用化定义转换运算符:预期类型/预期类型说明符
- 模拟返回具有多个用户定义转换的类型的方法
- 是否可以使用明确的模板参数调用模板的用户定义转换操作员
- 使用自定义转换运算符的不明确性
- C++显式积分用户定义转换
- 解决隐藏歧义的不明确用户定义转换
- 如何自定义转换模板参数
- 用户定义转换的第二个标准转换序列
- 如何将串联的定义转换为RC文件中的字符串
- 是否可以用C++编写自定义转换运算符(如“static_cast”)
- Qt4:QGraphicsScene/View和自定义转换方法
- 如何将c结构体定义转换为c++
- 如何在VS2008中将#define定义转换为字符串
- 为什么模板化的用户定义转换操作符能够确定其返回类型?
- #定义转换为LPCSTR或std::string的字符串
- 错误无效的用户定义转换
- 无效的用户定义转换错误
- 是否有方法为任何指针类型定义转换操作符
- Visual C++ 不存在从"myClass1"到"myClass1"的合适用户定义转换
- 提振.Python自定义转换器