带有字符串操作的c++澄清

c++ Clarification with String manipulation

本文关键字:c++ 澄清 操作 字符串      更新时间:2023-10-16

我不是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)

此时我什么也看不清。我应该怎么做才能知道从一开始我的两个字符串(_rbstProcessNameptcProcessName)发生了什么?

再次感谢你的帮助!

_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调用约定参数传递给函数。

简单来说,这个函数接受一个字符串和字符串的长度,并返回一个错误码。基于http://msdn.microsoft.com/en-us/library/y889wzfw(v=vs.80).aspx,此函数似乎将提供的字符串(_Str)转换为小写。

根据MSDN http://msdn.microsoft.com/en-us/library/y889wzfw%28v=vs.100%29.aspx _tcslwr_s是一个宏,它映射到用于将字符串转换为小写的各种函数,具体取决于_UNICODE(标准函数的Unicode支持)和_MBCS(标准函数的多字节字符支持)宏的定义。VB。净等效将是.ToLower() string方法。