QTextStream转bool变量报错求助:无效二元转换操作数
Hey, let's work through this issue step by step. Looking at your code, there are a couple of clear problems causing that "invalid binary conversion operand" error:
1. Case Mismatch in Variable Names
First, you defined your boolean variable as dBm, but tried to read into dbM—those are two entirely different variables to the compiler! That's definitely one trigger for the error. Fix that first to match the case consistently:
bool dBm = false; if (!stream.atEnd()) stream >> dBm;
2. QTextStream's Default Bool Reading Behavior
Even after fixing the variable name, you might still hit conversion issues. Here's why: by default, QTextStream's >> operator only recognizes strictly case-sensitive "true" or "false" strings when reading into a bool. If your file uses 1/0, or case-insensitive values like "TRUE"/FALSE, the direct conversion will fail.
Here are two common solutions based on what's in your file:
Solution A: Read as Integer, Convert to Bool
If your file uses numeric values (1 for true, 0 for false), read into an integer first, then cast to bool:
bool dBm = false; if (!stream.atEnd()) { int intValue; if (stream >> intValue) { // Make sure the read succeeds dBm = (intValue != 0); } }
Solution B: Read as String, Manually Parse
If your file uses string representations (like "true", "TRUE", "yes", etc.), read the string and check against your valid values:
bool dBm = false; if (!stream.atEnd()) { QString boolStr; if (stream >> boolStr) { // Adjust the conditions to match your file's format dBm = (boolStr.compare("true", Qt::CaseInsensitive) == 0) || (boolStr == "1"); } }
Pro Tip: Check Stream Status
Always add a check for the stream's status after reading to catch any unexpected errors early:
if (stream.status() != QTextStream::Ok) { qDebug() << "Failed to read from the file stream"; }
That should resolve the conversion error you're seeing!
内容的提问来源于stack exchange,提问作者Satish Joshi

