std::cout doen不喜欢 std::endl 和 String in conditional-if


main.cpp: In function ‘void PrintVector(std::vector<std::__cxx11::basic_string<char> >&, bool)’:
main.cpp:16:41: error: overloaded function with no contextual type information
  std::cout << ((newline)? (std::endl) : "");
                                         ^~

为什么std :: cout不喜欢std :: endl和striceal-if?

中的字符串

std::endl是流动机。这是一个函数。它没有""的常见类型。因此它们不能是条件表达的两种类型。由于常见类型是整个表达式的类型。

除了添加新行之外,您甚至不需要std::endl所做的一切,因此,只需用"n"替换它即可打印新线。这样,在操作数上执行所有常规转换后,可以将公共类型推荐为const char*

我将其更改为:

std::cout << (newline? "n" : "") << std::flush;

不可能用'(会更快)写它:

std::cout << (newline? 'n' : '') << std::flush;

因为''是空的,并且导致"错误:空字符常数"。

有条件性的溶液是如此复杂,以至于应该更喜欢以下内容:

if (newline) std::cout << std::endl;

相关内容

  • 没有找到相关文章

最新更新