c++ - 在 std::string 中是否有等效的方法来执行 CString::GetBuffer ?

标签 c++ string

许多 Windows API,例如 GetModuleFileName 等...将输出写入 char* 缓冲区。但使用std::string更方便。有没有办法让它们直接写入 std::string (或 std::wstring)的缓冲区?

抱歉我的英语不好。我的母语不是英语。 -_-

塔沃恩·T。

最佳答案

如果您使用 C++0x,则保证以下内容有效:

std::string s;
s.resize(max_length);
size_t actual_length = SomeApiCall(&s[0], max_length);
s.resize(actual_length);

在C++0x之前,std::string内容不保证在内存中是连续的,因此理论上代码不可靠;实际上,它适用于流行的 STL 实现。

关于c++ - 在 std::string 中是否有等效的方法来执行 CString::GetBuffer ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4533546/

相关文章:

Java数组栈实现字符串转换和增长

c++取消引用通过引用传递分配的指针,给出随机值

c++ - 初始化指针常量 vector

c++ - 如何将具有透明度的 QImage 放到剪贴板上供另一个应用程序使用?

c - 在 C 编译期间是否有解析或修改字符串的方法?

c - 如何将 char[] 转换为十六进制? C

javascript - 在两个分隔符上拆分字符串?

c++ - 转换指南

android - 错误 : '__NDK_FPABI__' does not name a type

C Sprintf 格式错误