我收到错误消息:从std :: basic_istream <char,std :: char_traits <char =“” >>到char不存在合适的转换函数

时间:2019-03-29 23:19:57

标签: c++

我正试图使运算符>>重载,并且我想从输入中读取每个字符,但出现该错误。 这是代码:

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

    }
}

1 个答案:

答案 0 :(得分:1)

如果您希望它返回字符,则无需为.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,那么您将执行注释中提到的操作,

while (input.get(c))  

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