类型'std :: istream *'和'char'的无效操作数为二进制'operator >>'

MowDownJoe

我有一个基本功能:

TokenType getToken(istream *in, string& recognized){
    char token;
    in >> token;
    if (token=='#'){
        in.ignore('\n');
        in >> token;
    }
    return T_UNKNOWN;
}

TokenType只是一个枚举。)

由于某些原因,in >> token;当用G ++编译时,这两行都给我这个错误:

error: invalid operands of types ‘std::istream* {aka std::basic_istream<char>*}’ and ‘char’ to binary ‘operator>>’

为什么编译器会抛出此错误?我希望能够charin指向的流中提取一个如果char是磅号,则跳到下一行

为了后代,我包括:

#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
#include <regex>

using namespace std;
环球网

您需要取消引用istream指针

(*in) >> token;

in->ignore('\n');

或者更改为引用而不是指针。

TokenType getToken(istream & in, string& recognized);

您将必须通过取消引用指针来更改调用函数的方式。

 getToken(*in, recognized);

正如0x499602D2指出的那样,使用in->ignore('\n');对您的用法没有意义,您需要使用:

in->ignore(std::numeric_limits<std::streamsize>::max(), '\n');

在找到新的换行符之前,它将忽略最多以字符为单位的最大流大小。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误:类型为'const char [35]'和'const char [2]'的无效操作数为二进制'operator +'

来自分类Dev

将类型为'char *'和'const char [2]'的c ++无效操作数转换为二进制'operator +'

来自分类Dev

二进制'operator +'类型为'const char *'和'const char [2]'的无效操作数

来自分类Dev

二进制'operator +'类型为'const char [8]'和'const char *'的无效操作数

来自分类Dev

错误:类型为“const char [8]”和“const char [7]”的无效操作数到二进制“operator<<”

来自分类Dev

二进制“ operator <<”类型为“ double”和“ const char [5]”类型的无效操作数

来自分类Dev

二进制“ operator!=”类型为“ double”和“ const char [13]”类型的无效操作数

来自分类Dev

'int' 和 'const char [15]' 类型的无效操作数到二进制 'operator<<' ^

来自分类Dev

错误:不匹配'operator >>'(操作数类型为'std :: istream'{aka'std :: basic_istream <char>'}和'const int')|

来自分类Dev

arduino,错误:“char [14]”和“char [5]”类型的无效操作数到二进制“operator+”

来自分类Dev

错误:类型为“ double *”和“ double”的无效操作数为二进制“ operator /”

来自分类Dev

二进制“ operator +”类型为“ int *”和“ int *”的无效操作数

来自分类Dev

错误:类型为'int'和'<未解析的重载函数类型>'的无效操作数为二进制'operator <<'

来自分类Dev

类型为'int'和'<未解析的重载函数类型>'的无效操作数为二进制'operator <<'

来自分类Dev

C ++错误:类型为'double'和<unresolved重载的函数类型'的操作数对二进制'operator'无效

来自分类Dev

尝试编写备份程序 (C++) 时将类型为“int(const char*)”和“const char [11]”的无效操作数转换为二进制“operator<<”

来自分类Dev

为什么我会收到此错误?错误:二进制“ operator /”类型为“ int”和“ int(int,int)”的无效操作数

来自分类Dev

无效的二进制二进制操作数(“ char(*)[36]”和“ char *”)

来自分类Dev

'operator + ='不匹配(操作数类型为'std :: basic_ostream <char>'和'int')

来自分类Dev

二进制 '<<' : 未找到采用类型为 'std::basic_ostream<char, std::char_traits<char>>' 的左操作数的运算符

来自分类Dev

二进制表达式('std :: ostream'(aka'basic_ostream <char>')和'const char *')的无效操作数

来自分类Dev

没有运算符匹配这些操作数;操作数类型为:std::istream >> const char [5]

来自分类Dev

对二进制+(char *)和(char *)无效的操作数?

来自分类Dev

错误:二进制 + 的无效操作数(有 'char *' 和 'char *'),使用宏

来自分类Dev

无效的二进制二进制操作数('ostream'(aka'basic_ostream <char>')和'Date')

来自分类Dev

错误:二进制运算符'/'的类型为'int'和'float *'的无效操作数

来自分类Dev

二进制运算符的类型为'int'和'double(double *,double *,int)'的无效操作数

来自分类Dev

'operator <<'不匹配(操作数类型为'std :: ostream'{aka'std :: basic_ostream <char>'}和'const std :: type_index')

来自分类Dev

在执行operator >>时出错:C ++没有运算符与这些操作数匹配,操作数类型为:std :: istream >> const double error

Related 相关文章

  1. 1

    错误:类型为'const char [35]'和'const char [2]'的无效操作数为二进制'operator +'

  2. 2

    将类型为'char *'和'const char [2]'的c ++无效操作数转换为二进制'operator +'

  3. 3

    二进制'operator +'类型为'const char *'和'const char [2]'的无效操作数

  4. 4

    二进制'operator +'类型为'const char [8]'和'const char *'的无效操作数

  5. 5

    错误:类型为“const char [8]”和“const char [7]”的无效操作数到二进制“operator<<”

  6. 6

    二进制“ operator <<”类型为“ double”和“ const char [5]”类型的无效操作数

  7. 7

    二进制“ operator!=”类型为“ double”和“ const char [13]”类型的无效操作数

  8. 8

    'int' 和 'const char [15]' 类型的无效操作数到二进制 'operator<<' ^

  9. 9

    错误:不匹配'operator >>'(操作数类型为'std :: istream'{aka'std :: basic_istream <char>'}和'const int')|

  10. 10

    arduino,错误:“char [14]”和“char [5]”类型的无效操作数到二进制“operator+”

  11. 11

    错误:类型为“ double *”和“ double”的无效操作数为二进制“ operator /”

  12. 12

    二进制“ operator +”类型为“ int *”和“ int *”的无效操作数

  13. 13

    错误:类型为'int'和'<未解析的重载函数类型>'的无效操作数为二进制'operator <<'

  14. 14

    类型为'int'和'<未解析的重载函数类型>'的无效操作数为二进制'operator <<'

  15. 15

    C ++错误:类型为'double'和<unresolved重载的函数类型'的操作数对二进制'operator'无效

  16. 16

    尝试编写备份程序 (C++) 时将类型为“int(const char*)”和“const char [11]”的无效操作数转换为二进制“operator<<”

  17. 17

    为什么我会收到此错误?错误:二进制“ operator /”类型为“ int”和“ int(int,int)”的无效操作数

  18. 18

    无效的二进制二进制操作数(“ char(*)[36]”和“ char *”)

  19. 19

    'operator + ='不匹配(操作数类型为'std :: basic_ostream <char>'和'int')

  20. 20

    二进制 '<<' : 未找到采用类型为 'std::basic_ostream<char, std::char_traits<char>>' 的左操作数的运算符

  21. 21

    二进制表达式('std :: ostream'(aka'basic_ostream <char>')和'const char *')的无效操作数

  22. 22

    没有运算符匹配这些操作数;操作数类型为:std::istream >> const char [5]

  23. 23

    对二进制+(char *)和(char *)无效的操作数?

  24. 24

    错误:二进制 + 的无效操作数(有 'char *' 和 'char *'),使用宏

  25. 25

    无效的二进制二进制操作数('ostream'(aka'basic_ostream <char>')和'Date')

  26. 26

    错误:二进制运算符'/'的类型为'int'和'float *'的无效操作数

  27. 27

    二进制运算符的类型为'int'和'double(double *,double *,int)'的无效操作数

  28. 28

    'operator <<'不匹配(操作数类型为'std :: ostream'{aka'std :: basic_ostream <char>'}和'const std :: type_index')

  29. 29

    在执行operator >>时出错:C ++没有运算符与这些操作数匹配,操作数类型为:std :: istream >> const double error

热门标签

归档