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などを使用した結果ではないことが判明しました。