gpt4 book ai didi

c++ - 传递 CString 和传递 CString.GetBuffer 到 CString.Format 中的 %s 之间有什么区别吗

转载 作者:行者123 更新时间:2023-11-28 07:26:19 26 4
gpt4 key购买 nike

给定

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 成员 - 一个存储受控字符序列的指针。

GetBuffer仅当您必须直接操作 CString 的内容时才应使用。请注意,这将返回一个非 const 指针。这通常在与 C API 交互时使用(有关详细信息,请参阅 Modifying CString Contents Directly)。

关于c++ - 传递 CString 和传递 CString.GetBuffer 到 CString.Format 中的 %s 之间有什么区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18702304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com