将 char\* 转换为字符串 C

新手上路,请多包涵

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

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

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

原文由 Terry Li 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 657
2 个回答
std::string str(buffer, buffer + length);

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

 str.assign(buffer, buffer + length);

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

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

原文由 Benjamin Lindley 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

string str = charPtr;
cout << str << endl;

原文由 Taha 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题