QTextStream的操作数到二进制的转换无效
Invalid Operands to Binary Conversion for QTextStream
我需要了解QTextStream到bool变量的转换。看看我的代码:
QFile file(SOME FILENAME);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) qDebug() << "FILE COULD NOT BE OPENED";
QTextStream stream(&file);
bool dBm = false;
if (!stream.atEnd()) stream >> dbM;
由于我上面的表达是抛出错误,我需要帮助。
QTextStream
和bool
没有现成的>>
运算符。
医生。QTextStream中提到了许多输入运算符,但对于bool
:没有
QTextStream;运算符>>(QChar&c(
QTextStream;运算符>>(char&c(
QTextStream;运算符>>(short&i(
QTextStream;运算符>>(无符号短&i(
QTextStream&运算符>>(int&i(
QTextStream;运算符>>(unsigned int&i(
QTextStream;运算符>>(long&i(
QTextStream;运算符>>(无符号长&i(
QTextStream&运算符>>(qlonglong&i(
QTextStream;运算符>>(qulonglong&i(
QTextStream;运算符>>(float&f(
QTextStream;运算符>>(double&f(
QTextStream;运算符>>(QString&str(
QTextStream&操作符>>(QByteArray&array(
QTextStream&操作员>>(char*c(
然而,为个人快乐添加一个并不那么复杂。
最复杂的是@Frank Osterfeld在这条评论中已经提到的内容–以定义CCD_ 5和CCD_。
对于我的MCVE,我只使用了0
和1
。
testQTextStreamInputBool.cc
:
#include <QDebug>
#include <QTextStream>
// a stream input operator for bool
QTextStream& operator>>(QTextStream &in, bool &var)
{
char value;
in >> value;
var = value == '1';
return in;
}
int main()
{
QTextStream in(stdin);
while (!in.atEnd()) {
bool value; in >> value;
qDebug() << "Read:" << (value ? "true" : "false");
}
}
testQTextStreamInputBool.pro
:
SOURCES = testQTextStreamInputBool.cc
QT = core
在cygwin64:的bash
中编译和测试
$ qmake-qt5 testQTextStreamInputBool.pro
$ make
g++ -c -fno-keep-inline-dllexport -D_GNU_SOURCE -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_CORE_LIB -I. -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtCore -I. -I/usr/lib/qt5/mkspecs/cygwin-g++ -o testQTextStreamInputBool.o testQTextStreamInputBool.cc
g++ -o testQTextStreamInputBool.exe testQTextStreamInputBool.o -lQt5Core -lpthread
$ echo "0110010" | ./testQTextStreamInputBool
Read: false
Read: true
Read: true
Read: false
Read: false
Read: true
Read: false
$
当然,也可以重载operator<<(QTextStream&, bool)
,以便为自定义输入提供匹配的自定义输出。
否则,编译器将隐式地将bool
转换为int
,并使用QTextStream::operator<<(int)
。因此,false
将被写入为0
,true
将被写入1
。
这正是我的重载bool流输入运算符所期望的。。。
- 错误:从"int"到枚举c++的转换无效
- 从 'int' 到 'int*' CPP 的转换无效
- C++ PTHREADS - 无效转换无效*(*)()到无效*(*)(无效*)
- 为什么我收到"从常量指针到指针的转换无效?
- 错误:从"int"到"int*"的转换无效[-允许].我在下面提供了我的代码,我
- 从类指针到 int 的转换无效
- C++ 错误:由于 swprintf 而从 'int' 到 'const wchar_t* 的转换无效
- 错误:从'void*'到'const uint8_t* {aka const unsigned char*}'的转换无效 [-允许]
- QTextStream的操作数到二进制的转换无效
- 从类型"void*"到函数指针的强制转换无效
- 错误:从 'char' 到 'const char' [-允许] strcat(加密,密钥[i])的转换无效;
- C++ - 从 "int" 到 "unsigned char" 的缩小转换无效
- 返回对象时从'const DList<int>* const'到 'DList<int>*' [-fallowive] 的转换无效
- 错误:AES 加密密钥:从"char*"到"无符号字符"的转换无效
- 模板类实例化中的指针转换无效
- 从"int"到"矢量*"的转换无效
- 从类型"void*"到类member_function指针的强制转换无效
- 在 sprintf 中从 'signed char*' 到 'char*' 的转换无效
- 另一个:从"常量类型*"到"类型*"的转换无效
- constexpr 链表 - 从 const X* 到 X* 的转换无效