我收到错误:没有合适的转换函数从 std::basic_istream<char、std::char_traits<char>> 到 char 存在

I'm getting the error: no suitable conversion function from std::basic_istream<char, std::char_traits<char>> to char exists

本文关键字:char lt gt std istream 存在 traits basic 错误 函数 转换      更新时间:2023-10-16

我正在尝试重载运算符>>,我想从输入中读取每个字符,但我收到该错误。这是代码:

istream& operator>>(istream& input, Natural_Big_Number number)
{
    int x;
    input >> x;
    number.set_nr_digits(x);
    char c;
    while ((c = input.get(c)))
    {
    }
}

如果希望参数返回字符,则无需指定要.get()的参数。 https://en.cppreference.com/w/cpp/io/basic_istream/get

#include <iostream>
using namespace std;
istream& operator>>(istream& input, int number)
{
    char c;
    while ((c = input.get()))
    {
    }
}

https://godbolt.org/z/XSKvv4

如果你想要的是检查流的布尔值是否有false ness,那么你将执行注释中提到的操作,而不是:

while (input.get(c))  

它将字符存储在c然后检查返回的输入流的bool值。