草庐IT

c++ - 使用 C++ 可变长度参数时如何将 _TCHAR * 转换为 char *?

我们需要将格式_TCHAR*字符串和一些char*字符串传递给具有可变长度参数的函数:inlinevoidFooBar(const_TCHAR*szFmt,constchar*cArgs,...){//...}所以可以这样调用:char*foo="foo";char*bar="bar";LogToFileA(_T("Test%s%s"),foo,bar);显然,一个简单的解决方法是使用_TCHAR而不是char,但不幸的是我们没有那么奢侈。我们需要将它与va_start等一起使用,以便我们可以格式化字符串:va_listargs;_TCHARszBuf[BUFFER_MED_SIZE]

c++ - 为什么不能将 TCHAR* 转换为 char*

错误C2664:“strcpy”:无法将参数1从“TCHAR*”转换为“char*”代码:LPCTSTRname,DWORDvaluestrcpy(&this->valueName[0],name);错误C2664:“strlen”:无法将参数1从“LPCTSTR”转换为“constchar*”LPCTSTRname;strlen(name)上面的代码在另一个项目中工作正常,我找不到它在这个MSVS2010项目中不起作用的原因。 最佳答案 您需要使用类似wcstombs的函数定义_UNICODE时。或者只是使用_tcslen(在Ge

c++ - 安全的 C++ std::string 到 TCHAR * 转换?

我正在尝试将std::string转换为TCHAR*用于CreateFile().我编译并运行的代码,但VisualStudio2013出现编译器警告:warningC4996:'std::_Copy_impl':Functioncallwithparametersthatmaybeunsafe-thiscallreliesonthecallertocheckthatthepassedvaluesarecorrect.Todisablethiswarning,use-D_SCL_SECURE_NO_WARNINGS.SeedocumentationonhowtouseVisualC++

c++ - 将 strcpy_s 用于 TCHAR 指针(Microsoft 特定)

我想知道哪种方法是正确的?_tcscpy(tchar_pointer,_tcslen(tchar_pointer),_T("HelloWorld"));或_tcscpy(tchar_pointer,_tcsclen(tchar_pointer),_T("HelloWorld"));或_tcscpy(tchar_pointer,???,_T("HelloWorld")); 最佳答案 假设您使用的是_tcscpy_s而不是_tcscpy,第二个参数应该是数组的实际大小,而不是当前包含的字符串的长度。例如:TCHARdest[20];_t

c++ - 我怎样才能对 TCHAR 进行子字符串化

我有一个TCHAR和如下值:TCHARszDestPathRoot[MAX_PATH]="StringThis";现在我想要TCHAR中的第一个三个字符,如下所示:szDestPathRoot.substring(0,2);我该怎么做。 最佳答案 TCHAR[]是一个简单的空终止数组(而不是C++类)。因此,没有“.substring()”方法。TCHAR[](根据定义)可以是宽字符串(Unicode)或简单的字符字符串(ASCII)。这意味着每个字符串函数都有wcs和str等价物(wcslen()vsstrlen()等)ETC)。

windows - TCHAR 和 _TCHAR 的区别

在Windows头文件tchar.h中定义的两个符号TCHAR和_TCHAR类型之间有什么不同?举例说明。简要描述您将在代码中使用TCHAR而不是_TCHAR的场景。(10分) 最佳答案 除了@RussC所说的,TCHAR被Win32API使用并基于UNICODE定义,而_TCHAR是由C运行时使用,并且基于_UNICODE定义。UNICODE和_UNICODE通常一起定义/省略,使TCHAR和_TCHAR可以互换,但这不是必需的.它们在语义上是分开的,以供不同的框架使用。 关于wind

c++ - TCHAR* envp[] : What is it?

我用VisualStudio创建了一个VC++控制台项目,它自动生成了这个函数:int_tmain(intargc,TCHAR*argv[],TCHAR*envp[]){...}我只是想知道envp代表什么以及如何/何时可以/应该使用它?谢谢! 最佳答案 上面的envp参数将存储环境变量。Theenvparray,whichisacommonextensioninmanyUNIX®systems,isusedinMicrosoftC++.Itisanarrayofstringsrepresentingthevariablesseti

c++ - 如何计算 std::basic_string<TCHAR>

我正在尝试找出basic_string.但是cout正在抛出错误。我能知道怎么做吗 最佳答案 正如dauphic所说,std::wcout用于宽字符串,std::cout用于窄字符串。如果您希望能够为任何一种类型的字符串进行编译(TCHAR旨在使这种事情变得更容易),这样的事情有时会让生活变得更轻松:#ifdefined(UNICODE)||defined(_UNICODE)#definetcoutstd::wcout#else#definetcoutstd::cout#endif使用tcout代替。

c++ - 如何为 TCHAR 数组赋值

我的C++代码中有一个TCHAR数组,我想为它分配静态字符串。我通过它设置了一个初始字符串TCHARmyVariable[260]=TEXT("initialvalue");这一切都很好。但是,当我将它分成两行时,如TCHARmyVariable[260];myVariable=TEXT("initialvalue");它出现错误并给出编译器错误:errorC2440:'=':cannotconvertfrom'constchar[14]'to'TCHAR[260]'TEXT()函数不应该完全符合我的要求吗?将给定的字符串转换为TCHARs?为什么将两条线放在一起时它会起作用?我必须进

c++ - 在 C++ 中将 TCHAR 转换为字符串

我正在尝试将TCHAR转换为字符串,如下所示:std::stringmypath;TCHARpath[MAX_PATH];GetModuleFileName(NULL,path,MAX_PATH);我需要将mypath设置为path。我做了一个简单的循环并将path[index]连接到mypath并且这可行,但我不喜欢这种方式。我是C++的新手,但已经完成了大量的C#。我见过GetModuleFileName的例子,它传入一个“char”,但它不喜欢它。它需要TCHAR或LPWSTR。 最佳答案 TCHAR是一个定义为char或wc