带有字符串操作的c++澄清
c++ Clarification with String manipulation
我不是c++开发人员,我需要将一些代码转换为vb.net
我发现了这个
_tcslwr_s
我甚至不知道它是一个类型还是一个函数(方法)。它用于:
_bstr_t _rbstProcessName
TCHAR* ptcProcessName = static_cast<TCHAR*>(_rbstProcessName);
_tcslwr_s(ptcProcessName, _rbstProcessName.length() + 1);
我知道_tcslwr_s
来自tchar.h
中的#define
,这是一个VS框架系统文件。
我希望简短地解释一下什么是#define
,在这种情况下,什么是_tcslwr_s
提前感谢!
编辑
在注释的帮助下,现在我知道了什么是定义。搜索代码,我发现_tcslwr_s
定义_wcslwr_s
。只有在string.h
中有这两行,它们是:
_Check_return_wat_ _CRTIMP errno_t __cdecl _wcslwr_s(_Inout_z_cap_(_SizeInWords) wchar_t * _Str, _In_ size_t _SizeInWords);
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t, _wcslwr_s, _Deref_prepost_z_ wchar_t, _String)
此时我什么也看不清。我应该怎么做才能知道从一开始我的两个字符串(_rbstProcessName
和ptcProcessName
)发生了什么?
_Check_return_wat_ _CRTIMP errno_t __cdecl _wcslwr_s(_Inout_z_cap_(_SizeInWords) wchar_t * _Str, _In_ size_t _SizeInWords);
正在声明一个名为_wcslwr_s
的函数,该函数接受wchar_t *
和size_t
,并返回errno_t
。所有以下划线开头的内容(_Str
和_SizeInWords
除外)都是函数的属性。例如,__cdecl
表示应该使用C调用约定(参见http://msdn.microsoft.com/en-us/library/zkwh89ks(v=vs.80).aspx), _In_
表示应该使用C调用约定参数传递给函数。
_Str
)转换为小写。
根据MSDN http://msdn.microsoft.com/en-us/library/y889wzfw%28v=vs.100%29.aspx _tcslwr_s
是一个宏,它映射到用于将字符串转换为小写的各种函数,具体取决于_UNICODE
(标准函数的Unicode支持)和_MBCS
(标准函数的多字节字符支持)宏的定义。VB。净等效将是.ToLower()
string方法。
- 传递shared_ptr功能-需要澄清
- C++ 擦除函数中需要澄清
- std::memory_order和指令指令,澄清
- 临时对象:术语澄清
- 运行时多态性和dynamic_cast需要澄清
- 寻求对 constexpr 功能的澄清
- 需要对C++中的堆栈和模板进行一些澄清
- 警告:返回对临时 - 奇怪情况的引用(对 Rvalue 的澄清)
- 澄清了 strcpy() 在像这样初始化字符数组时的工作 *Arr.
- C 特征矩阵澄清
- CPP/C 中的常量用法和结构构造函数中的澄清
- 澄清了双精度数据类型的使用
- 寻求对std::forward的澄清
- C++:关于"valid pointers and references"的澄清
- 澄清字符串变量作为通过值通过
- 澄清功能如何工作并与类相关
- 寻找 std::join 行为的澄清
- 读取文件函数lpbuffer和字节以读取澄清
- 澄清了使用 enable_if 的成员函数模板专用化
- AVX 内在澄清,4x4 矩阵乘法奇数