したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

文字列の保存について

2管理人★:2024/06/22(土) 11:26:47
sagamatさん

書き込まれた文字列の最後がNULL(\0)で終端されていないのが原因だと思います。
書き込む際にNULL(\0)まで含めて書き込むか、読み込む際にNULL文字を追加すればよいと思います。

例1 NULL文字まで書き込む
dataTextLen =dataTextLen + 1; // NULL終端文字まで含めるため+1する
state->write(&dataTextLen, sizeof(int));
state->write((void*)dataText.c_str(), sizeof(char) * dataTextLen);

例2 NULL文字を追加できるよう、tmpTextを1文字多くする。
char* tmpText = new char[dataTextLen+1];
memset(tmpText, 0 sizeof(char) * (dataTextLen+1)); // tmpTextをNULL文字で埋める
state->read(tmpText, sizeof(char) * dataTextLen);
dataText = std::string(tmpText);


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板