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

問題は、バイト配列を単一の文字に割り当てることです。ただし、バイト配列から必要な文字は 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 に答える