传递 CString 和将 CString.GetBuffer 传递给 CString.Format 中的 %s 之间有
is there any difference between passing a CString and passing CString.GetBuffer to a %s in a CString.Format
给定
CString buffer = "";
Cstring value = "blah";
buffer.Format ("%s %s", value, value.GetBuffer());
传递CString
的两种方式是等效的,还是传递CString
幕后发生了导致其等效的事情?
两者都不正确。前者似乎巧合地起作用,而后者使用的工具服务于不同的目的。唯一正确的方法是调用强制转换运算符:
buffer.Format("%s", static_cast<LPCTSTR>(value));
直接传递 CString
对象只是巧合,因为对象开头的指针大小值被解释为指向字符数组的指针。CString
类的第一个类成员恰好是m_pszData
成员 - 存储受控字符序列的指针。
仅当必须直接操作CString
的内容时,才应使用GetBuffer
。请注意,这将返回一个非const
指针。这通常在与 C API 接口时使用(有关详细信息,请参阅直接修改 CString 内容)。
相关文章:
- 可视化 如何将 CString 值列表添加到 MFC C++ 中的组合框中?
- 使用指针 c++ 反转函数中的 cstring 数组
- 视觉 从 C++ 中的 CString 中删除""
- 尝试在C 中编写Pig Latin程序,我无法将字符串的单个单词纳入CSTRING中,无法编辑
- 试图替换cstring中的单词
- 在C++中去掉CString中的换行符
- 从 ATL::CString 转换为 C++ 中的字符串
- 将 CString 替换为 mingw 编译器中的 eclipse
- 传递 CString 和将 CString.GetBuffer 传递给 CString.Format 中的 %s 之间有
- 四舍五入CString中包含的值
- VS2013 Unicode中的C++多行CString文字
- 如何替换CString中字符的第一次出现
- 中的方法<cstring>也适用于字符串类吗?
- 解析CString中的信息
- c++中替换CString中的字符
- 如何将CEdit类型的数据转换为CString类型的数据,以及如何在消息框中显示
- 如何将cstring复制到构造函数初始化列表中的成员变量
- MFC,如何获取CArray中的元素,哪个元素类型是CString
- visual Escape C++中CString中的特殊字符
- 如何知道std::string/Cstring中的值是否为数字