我在做考试修订时有点被旧任务困住了。我从控制台读取4个值,但是在一行中。他们是GPS坐标,例如输入可以是25 46 3 S
。我使用以下代码来读取值:
cout << "Latitude: ";
latitudeLine = cin.readLine();
QStringList args = latitudeLine.split(" ");
degrees = args[0].toInt();
minutes = args[1].toInt();
seconds = args[2].toInt();
cardinalDirection = args[3];
latitudeLine是一个QString。度,分和秒是整数,cardinalDirection是char。我不能改变这些,因为他们在问题的UML图中给了我。一切都很好,除了在最后一行我将QString分配给一个不起作用的char变量。我已经浏览了网络,我发现的所有内容都是将长QString转换为char *,但这给了我一个错误,说我需要一个char而不是char *。这将始终是一个单个字符,是否有任何简单的方法将QString强制转换为char?
提前致谢!
答案 0 :(得分:3)
为什么不使用这样的索引运算符:args[3][0].toAscii()
?
索引运算符将返回位置0的QChar
,QChar::toAscii将返回char
内的QChar
。
注意:不要忘记检查args[3]
是否为空,否则索引操作符将使应用程序崩溃。
修改强>
正如@hyde
所述,请使用QString::toLatin1
代替QString::toAscii
。