1. ホーム
  2. c++

[解決済み】char*を文字列に変換する C++

2022-02-18 01:21:03

質問

文字列の先頭アドレスを知っている(例, char* buf ) と最大長 int l; という文字列の総文字数以下であること。 l ).

の値を取得する最も簡単な方法は何ですか? string を指定したメモリセグメントから取得できますか?言い換えれば、どのように string retrieveString(char* buf, int l); .

EDIT : 可変長の文字列の書き込み、読み出しのために確保されたメモリです。つまり int l; は、文字列の長さではなく、メモリの大きさを示します。

どのように解決するのですか?

std::string str(buffer, buffer + length);

または、その文字列がすでに存在する場合。

str.assign(buffer, buffer + length);

編集する まだ質問を完全に理解しているわけではありません。 しかし、もしJoshGが提案しているようなことであれば、あなたが望むものは length 文字まで、あるいはヌル文字まで、どちらか早いほうを使用することができます。

std::string str(buffer, std::find(buffer, buffer + length, '\0'));