私は C++ ソケットの割り当てに取り組んでおり、サーバーからクライアントに文字列を送信しようとしています。
const char* msg;
msg = "test";
クライアントtest
がコンソールに出力しますが、次のことを試してみると:
std::string msg;
std::getline(std::cin, msg);
印刷された結果は意味不明です。送信する前に、メッセージを保持する構造体をシリアル化し、メッセージはそのままです。逆シリアル化されたパッケージを確認すると、メッセージがめちゃくちゃです。
次の構造体を使用しています。
struct Package{
unsigned int package_type;
const char* msg;
int senderid;
int receiveid;
void SerializeData(char* _data){
memcpy(_data, this, sizeof(Package));
}
void DeserializeData(char* _data){
memcpy(this, _data, sizeof(Package));
}
};
コードで定義された const char* が機能するのに、string.c_str() が機能しない理由がわかりませんか?