将char*转换为字符串C++

Ter*_* Li 28 c++ string char

我知道字符串的起始地址(例如char* buf)和字符串的最大长度int l;(即字符总数小于或等于l).

string从指定的内存段获取值的最简单方法是什么?换句话说,如何实施string retrieveString(char* buf, int l);.

编辑:内存保留用于写入和读取可变长度的字符串.换句话说,int l;表示内存的大小而不是字符串的长度.

Ben*_*ley 19

std::string str(buffer, buffer + length);
Run Code Online (Sandbox Code Playgroud)

或者,如果字符串已存在:

str.assign(buffer, buffer + length);
Run Code Online (Sandbox Code Playgroud)

编辑:我仍然不完全确定我理解这个问题.但是,如果它像JoshG建议的那样,你想要最多的length字符,或者直到一个空的终止符,无论哪个先出现,那么你可以使用它:

std::string str(buffer, std::find(buffer, buffer + length, '\0'));
Run Code Online (Sandbox Code Playgroud)

  • 巧妙使用查找!我从没想过使用未找到的返回值做任何事情! (3认同)

Tah*_*aha 8

char *charPtr = "test string";
cout << charPtr << endl;

string str = charPtr;
cout << str << endl;
Run Code Online (Sandbox Code Playgroud)

  • 这个答案被低估了! (4认同)