Articles of tchar

Linux上的tchar.h

我正在尝试编写跨平台的i18n C ++代码。 由于大多数linux系统都倾向于使用UTF-8作为字符编码,所以我认为我应该在Linux上使用string,在Windows上使用wstring。 是linux上的tchar.h? Linux上tchar.h的等效replace是什么?

有没有一种方法可以在macros中有条件地使用_T / TEXT?

此问题是特定于Visual C ++(您可能会假定Visual C ++ 2005和更高版本)。 我想为unixoid系统(特别是FreeBSD)的程序创build胶水代码,以便在Win32上构build和运行,并对原始.c文件进行最小的更改。 现在,大部分都是直截了当的,但现在我遇到了一个问题。 我正在使用tchar.h头和TCHAR / _TCHAR并需要在原始代码中为err和errx调用(请参阅err(3) )创build粘合代码。 tchar.h我,即使你不同意使用tchar.h代码仍然应该写。 对err和errx的调用大致采用两种forms,这就是问题发生的地方: err(1, "some string with %d format specifiers and %s such", …) /* or */ err(1, NULL, …) 后者将输出存储在errno中的errno (使用strerror )。 现在的问题是,是否有任何方法可以写一个通用的macros,可以采取NULL和string文字? 我不必( 也不会 )关心作为第二个parameter passing的variables ,只有NULL和文字string。 当然,我的天真的初始方法并没有考虑到传递为NULL (使用可变macros!)的fmt : #define err(eval, fmt, …) my_err(eval, _T(fmt), __VA_ARGS__) 现在我不知道如何用macros来实现这个function,因为这需要编译时和运行时条件的混合,这是目前我无法想象的。 所以我正在寻找一个权威的答案,究竟这是否是可以想象的。 我现在采取的方法 – 缺乏更好的方法 […]

正确的风格与传统的TCHAR代码接口

我正在修改其他人广泛使用TCHAR的代码。 在我的代码中使用std :: wstring是更好的forms吗? wstring应该相当于在widechar平台上的TString,所以我没有看到问题。 理由是,它更容易使用原始的wstring比支持TCHAR …例如,使用boost:wformat。 下一个维护者会更清楚哪种风格? 我浪费了几个小时的时间,试图理解string的复杂性,似乎只是使用wstring会切断一半你需要了解的东西。 typedef std::basic_string<TCHAR> TString; //on winxp, TCHAR resolves to wchar_t typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring; 唯一的区别是分配器。 在一个不太可能的情况下,你的程序登陆一个Window 9x机器,还有一个API层可以将你的UTF-16string翻译成8位字符。 使用TCHAR进行新代码开发没有任何意义。 资源

在C ++中定义Unicode时映射格式说明符?

将_tprintf()映射到wprintf()时,将格式说明符%s映射到%ls ? 我正在使用_T()macros将string映射到ASCII或Unicode,具体取决于是否定义了_UNICODE 。 但是,像_tprintf("%s", _T("text string"))这样的调用会导致我麻烦,因为定义了_UNICODE时,types不一致。 我看到%ls应该用于Unicodestring。 如何在定义_UNICODE时将%s直接映射到%ls ? 有一些像_T()?这样的奇特function_T()?

如何将'unsigned int'转换为'TCHAR *'的C + +窗口?

我在Windows上是C ++的新手。 你能告诉我如何将unsigned int转换为TCHAR *吗?

Windows C ++:LPCTSTR与const TCHAR

在我的应用程序我声明一个stringvariables接近我的代码顶部定义我的窗口类的名称,我在调用RegisterClassEx,CreateWindowEx等..现在,我知道一个LPCTSTR是一个typedef,并将最终跟随到一个TCHAR(以及一个CHAR或WCHAR取决于是否定义了UNICODE),但我想知道是否会更好地使用这个: static LPCTSTR szWindowClass = TEXT("MyApp"); 或这个: static const TCHAR szWindowClass[] = TEXT("MyApp"); 我个人更喜欢使用LPCTSTR作为来自JavaScript,PHP,C#背景,我从来没有真正考虑过将string声明为一个字符数组。 但是实际上有没有比使用其中一个更有优势,还是实际上对于我select的哪一个没有影响? 谢谢你,先进的,为你的答案。

tchar安全函数 – 为UTF-8常量计数参数

我正在从char到TCHAR移植一个库。 根据MSDN,此片段的count参数是多字节字符的数量,而不是字节数。 所以,我得到这个权利? 我在VC9中的项目属性说'使用Unicode字符集',我认为这是正确的,但我不是如何影响我的计数参数。 _tcsncmp(access, TEXT("ftp"), 3); //or do i want _tcsnccmp? “仅在Windows平台上支持,_mbsncmp和_mbsnbcmp是多字节版本的strncmp。_mbsncmp将比较最多的多字节字符,而_mbsnbcmp将比较最多的字节数,它们都使用当前的多字节代码页。 _tcsnccmp和_tcsncmp分别是_mbsncmp和_mbsnbcmp的相应通用函数。 _tccmp相当于_tcsnccmp。“ 类似的问题是_tcslen vs _tcsclen。

如何将TCHAR转换为双重可视化C ++

我想转换tchar *variables为我的项目加倍。 我怎样才能做到这一点? TCHAR *t = _T("1000.99");

我怎样才能子串一个TCHAR

我有一个TCHAR和价值如下: TCHAR szDestPathRoot[MAX_PATH]="String This"; 现在我想要TCHAR的前三个字符,如下所示: szDestPathRoot.substring(0,2); 我怎样才能做到这一点。

区分TCHAR和_TCHAR

在Windows头文件tchar.h中定义的两个符号TCHAR和_TCHARtypes有什么区别? 用例子来解释。 简要描述一下您将在代码中使用TCHAR而不是_TCHAR的场景。 (10分)