简体   繁体   English

我收到错误消息:std :: basic_istream没有合适的转换函数 <char, std::char_traits<char> &gt;到char存在

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

I'm trying to overload the operator >> and I want to read each character from an input but i get that error. 我试图使运算符>>重载,但我想从输入中读取每个字符,但出现错误。 Here is the code: 这是代码:

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

    }
}

You need to not specify a parameter to .get() if you want it to return the character. 如果您希望它返回字符,则无需为.get()指定参数。 https://en.cppreference.com/w/cpp/io/basic_istream/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 https://godbolt.org/z/XSKvv4

If what you want is to check the boolean value of the stream for false ness, then you would do what was mentioned in the comments, instead: 如果要检查流的布尔值是否false ,则可以执行注释中提到的操作,而不是:

while (input.get(c))  

which stores the character in c then checks the bool value of the returned input stream. 它将字符存储在c然后检查返回的输入流的bool值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 没有合适的转换 function 从 (C++) std::istream &amp;std::getline <char, std::char_traits<char> , 标准::分配器<char> &gt; 布尔值</char></char,> - no suitable conversion function from (C++) std::istream &std::getline<char, std::char_traits<char>, std::allocator<char>> to bool C ++和Visual Studio错误-没有来自“ std :: basic_ostream的合适转换函数” <char, std::char_traits<char> &gt;”到“ int”存在 - C++ and Visual Studio error - no suitable conversion function from “std::basic_ostream<char, std::char_traits<char>>” to “int” exists 1 IntelliSense:没有合适的构造函数可以从“bool”转换为“std :: basic_string” <char, std::char_traits<char> ,std :: allocator <char> &gt;” - 1 IntelliSense: no suitable constructor exists to convert from “bool” to “std::basic_string<char, std::char_traits<char>, std::allocator<char>>” 从&#39;void&#39;转换为非标量类型&#39;std :: pair <std::basic_string<char, std::char_traits<char> - conversion from ‘void’ to non-scalar type ‘std::pair<std::basic_string<char, std::char_traits<char> 我一直从Xcode收到一个错误,提示“ Apple Mach-O Linker(Id)Error” readIt(std :: _ 1 :: basic_ifstream <char,std::_1::char_traits<char> &gt;&,” - I keep getting an error from Xcode that says “ Apple Mach-O Linker (Id) Error ”readIt(std::_1::basic_ifstream<char,std::_1::char_traits<char> >&," 出于某种原因,我不断收到此错误:“运算符&gt;&gt;”不匹配(操作数类型为“std::istream”{又名“std::basic_istream”<char> &#39;} - for some reason I keep getting this error: no match for 'operator>>' (operand types are 'std::istream' {aka 'std::basic_istream<char>'} 无法绑定&#39;std :: basic_istream <char> &#39;左右&#39;std :: basic_istream <char> &amp;&amp;” - cannot bind 'std::basic_istream<char>' lvalue to 'std::basic_istream<char>&&' 重载运算符&gt;&gt;:无法绑定&#39;std::basic_istream<char> &#39; 左值到 &#39;std::basic_istream<char> &amp;&amp;&#39; - Overloading operator>>: cannot bind ‘std::basic_istream<char>’ lvalue to ‘std::basic_istream<char>&&’ 没有合适的构造函数来将“ const char [8]”转换为“ std :: basic_string” <wchar_t, std::char_traits<wchar_t> ,std :: allocator <wchar_t> &gt;” - no suitable constructor exists to convert from “const char [8]” to “std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t>>” ostream和运算符std :: basic_string <char, std::char_traits<char> ,std :: allocator <char> &gt;? - ostream and operator std::basic_string<char, std::char_traits<char>, std::allocator<char>>?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM