0

Qtのいくつかの特殊文字に問題があります。2つは引用符と改行です。telnetを使用してサーバーに接続していますが、サーバーは何らかの理由で入力の最初と最後に自動的に引用符を付けます。引用符と改行の両方を削除するのに問題があります。

void MyClient::readyRead()
{
    if(WaitingForString())
    {
        if(socket->canReadLine())
        {
            qDebug() << "Ready to read, string expected";
            qDebug() << socket->readLine();
        }
    }
    else 
    {
        if(socket->canReadLine())
        {
            qDebug() << "Ready to read line, number expected";
            QString data = QString(socket->readLine().replace("\n", "").replace("\"", "");
            qDebug() << data;
            waitForStrings(1);
        }
    }
}

改行を置き換える際の問題を以下に説明します。

telnetからの私の入力:こんにちは

プログラムが改行を置き換えた後: "ello(引用符付きの通常の出力は" Hello "になります)

また、引用符を置き換えてもまったく効果はありません。正規表現であるため、二重の円記号も使用してみましたが、どちらも1つある場合と同じ問題があります。助けてくれてありがとう。

編集:これはqDebugのフォーマットであり、Telnetなどを使用した結果ではないことが判明しました。

4

1 に答える 1

1

改行と引用符はqDebug()を使用した効果だけではないことを確認してください。

QDebugは常に文字列を引用符で囲み、その後に改行を書き込みます

于 2012-08-06T10:05:32.353 に答える