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

幸存者

我收到以下错误:

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

使用以下代码。知道为什么吗?

主程序

#include <sstream>      // std::stringstream

#define logStream(MSG) _logStream(MSG)

void _logStream(std::string MSG)
{ 
    std::stringstream _trace_stream_;
    _trace_stream_ << "logStream: " << MSG << std::endl;
}  

int main()
{
    logStream("Hello, " << "world!");    // compile error here

    return 0;
}

但是,使用内联 logStream 宏时不会出现编译错误。

#include <sstream> // std::stringstream

#define logStream(MSG) { \ 
    std::stringstream trace_stream; \ 
    trace_stream << "logStream: " << MSG << std::endl; \ 
} 

int main() 
{ 
    logStream("Hello, " << "world!"); 
    return 0; 
}

为什么?

泽特42
logStream("Hello, " << "world!")

operator<<对于两个参数都是字符串文字(又名const char[n]的情况,没有重载

operator<<对于参数之一是流的情况,有一个重载但是流仅在您的函数中创建logStream()当您将参数传递给函数时,它尚不可用。

为了解决多值记录相结合的问题,你可以使用operator+std::string

logStream(std::string("Hello, ") + "world!");

同样,如果参数之一是数字:

logStream(std::string("Hello, ") + "world " + std::to_string(42) + "!" );

这个问题没有被标记为 C++14,但这是你可以通过使用新的字符串文字运算符来添加一些语法糖的方法

using namespace std::string_literals;
logStream("Hello, "s + "world!");

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

二进制表达式的无效操作数(“ ostream”(又名“ basic_ostream <char>”)和“ ostream”)

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

错误:从'char'到'const char *的无效转换*

来自分类Dev

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

来自分类Dev

无效的二进制二进制操作数('const'和'const')

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

const char **和char **

来自分类Dev

对二进制表达式无效的操作数(“ ostream”(又名“ basic_ostream <char>”)和“ ostream”)

来自分类Dev

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

来自分类Dev

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

来自分类Dev

错误:从'char'到'const char *的无效转换*

来自分类Dev

错误:操作数类型不兼容(“ int”和“ const char *”)C ++

来自分类Dev

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

来自分类Dev

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

来自分类Dev

无效的二进制二进制操作数('const'和'const')

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

Related 相关文章

  1. 1

    二进制表达式的无效操作数(“ ostream”(又名“ basic_ostream <char>”)和“ ostream”)

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

    错误:从'char'到'const char *的无效转换*

  7. 7

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

  8. 8

    无效的二进制二进制操作数('const'和'const')

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

    const char **和char **

  13. 13

    对二进制表达式无效的操作数(“ ostream”(又名“ basic_ostream <char>”)和“ ostream”)

  14. 14

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

  15. 15

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

  16. 16

    错误:从'char'到'const char *的无效转换*

  17. 17

    错误:操作数类型不兼容(“ int”和“ const char *”)C ++

  18. 18

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

  19. 19

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

  20. 20

    无效的二进制二进制操作数('const'和'const')

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

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

  29. 29

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

热门标签

归档