【发布时间】:2014-08-23 09:23:08
【问题描述】:
我一直在尝试创建一个随机短语生成器,它从一个文本文件中读取名词,从另一个文本文件中读取动词。这一切都奏效了,但现在我正在尝试编写一个将主题的第一个字母大写的方法,但不断收到错误
错误:C2248:“QByteArray::operator QNoImplicitBoolCast”:无法访问在“QByteArray”类中声明的私有成员
参见 'QByteArray::operator QNoImplicitBoolCast' 的声明
参见“QByteArray”的声明
我将发布该方法的代码(对不起,如果格式不正确,我是新手)
void MainWindow::returnCap(QString sub){
char *str;
QByteArray ba;
ba = sub.toLatin1();
str = ba.data();
QString firstLetter;
firstLetter = str[0];
QString cappedFirstLetter;
cappedFirstLetter = firstLetter.toUpper();
char flc; //firstLetterChar
flc = cappedFirstLetter.toLatin1();
str[0] = flc;
}
感谢您的帮助!
【问题讨论】:
-
你在哪里得到错误?在哪一行?
-
flc = cappedFirstLetter.toLatin1();
-
toLatin1 返回 QByteArray...您必须使用 .data 或 char 将其转换为 char*
-
@ArcWalrus,您想将字节数组分配给字符吗?嗯……
-
如果你想让
sub的第一个字母大写,为什么不简单地做sub[0] = toupper(sub[0])呢?此外,您正在传递sub按值,因此您只是在修改一个副本。
标签: c++ qt char qbytearray toupper