1

我一直在尝试创建一个随机短语生成器,它从一个文本文件中读取名词,从另一个文本文件中读取动词。这一切都奏效了,但现在我正在尝试编写一个将主题的第一个字母大写的方法,但不断收到错误

错误: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;
    }

谢谢你的帮助!

4

2 回答 2

1

问题是您将字节数组分配给单个字符。但是,您只需要字节数组中的一个字符:

char flc; //firstLetterChar
flc = cappedFirstLetter.toLatin1()[0];

更新:

我将通过以下方式解决您的问题:

QChar c1 = sub[0];
c1 = c1.toUpper();
sub.replace(0, 1, c1);
于 2014-07-02T14:33:53.077 回答
0

您调用成员函数toLatin1,它返回一个QByteArray. 然后将此QByteArray对象分配给一个char变量(不是char*,只是char)。

于 2014-07-02T14:31:25.797 回答