-2

私は ftp サーバーを構築しています。これは、ファイル サイズがサーバーによって承認されているかどうかを確認するために、クライアントからサーバーに送信されるメッセージです。関数書き込みで char* を使用する必要があるため、文字列を char* に変換したいと考えています。文字列構造は fileName#fileSize(test.txt#37) です。私は c_str を試しましたが、最終的にゴミになりました。

次のコードを見てみましょう。

string str(filenameDes);
str += HASHTAG;
str += to_string(fileSize);
cout << "str: " << str << endl;
char * pchar = str.c_str();
// sending file size to server
int retVal = write(socket, pchar, strlen(pchar));

cout を使用してサーバーにメッセージを出力したい場合は、次のような出力が得られます: test2#37�� またはそれに近いもの。

ゴミはどうやって掃除するの?または char* に変換する他のコマンド?

4

1 に答える 1

0

問題は、char の配列を含むメッセージを受信したときに、すべてのセルで \0 で初期化しなかったことです。これにより、受信するメッセージの長さが不明な場合が解決されます。ポールマッケンジーに感​​謝します。

于 2015-06-06T11:45:29.517 に答える