问题标签 [tchar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
5628 浏览

c++ - TCHAR[]、LPWSTR、LPTSTR 和 GetWindow 文本函数

所以 GetWindowText 在 MSDN 上声明如下:

但是,要使代码正常工作,我们必须将第二个参数声明为

然后调用函数GetWindowText(hWnd,Wtitle,255); LPTSTR 是一个指向 tchar 数组的指针,所以声明 LPTSTR 和声明 TCHAR[] 类似吗?但它不是这样工作的。使用 TCHAR[] 时,程序返回有效的 GetWindowText 结果(它是一个整数,等于标题中的符号数)。问题是:如何从 TCHAR[] 中获得确切的标题?像这样的代码

或者

返回数字。如何将其与给定的字符串进行比较?

也不起作用。

0 投票
4 回答
1723 浏览

c++ - 用户定义的转换运算符作为 printf 的参数

我有一个为 TCHAR* 定义用户定义运算符的类,就像这样

我希望能够做类似的事情

甚至

但是在尝试时, printf 总是打印 (null) 而不是值。我还尝试了一个普通的 char* 运算符,以及 const 等的变体。它只有在我明确调用运算符或进行强制转换时才能正常工作,比如

但是,我不想投。如何做到这一点?

请注意,一种可能性是创建一个参数为 const TCHAR* 的函数,以便它强制调用运算符 TCHAR*,但这我也不想实现。

0 投票
2 回答
11780 浏览

visual-c++ - 将 char 转换为 TCHAR* argv[]

如何将文本输入TCHAR* argv[]

或者:我怎样才能从 转换charTCHAR* argv[]

0 投票
3 回答
4832 浏览

windows - 如何以跨平台友好的方式处理 C/C++ 中的 Unicode 字符串?

在不同于 Windows 的平台上,您可以轻松地使用char *字符串并将它们视为 UTF-8。

问题是在 Windows 上,您需要使用 wchar* 字符串 (W) 接受和发送消息。如果您使用 ANSI 函数 (A),您将不支持 Unicode。

因此,如果您想编写真正可移植的应用程序,您需要在 Windows 上将其编译为 Unicode。

现在,为了保持代码干净,我想看看推荐的处理字符串的方法是什么,一种最大限度地减少代码丑陋的方法。

您可能需要的字符串类型:std::string, std::wstring, std::tstring, char *, wchat_t *, TCHAR*, CString(ATL 之一)。

您可能遇到的问题:

  • cout/cerr/cin及其 Unicode 变体wcout,wcerr,wcin
  • 所有重命名的宽字符串函数和它们的 TCHAR 宏 -strcmp和.wcscmp_tcscmp
  • 代码中的常量字符串,使用 TCHAR 你将不得不用_T()宏填充你的代码。

您认为哪种方法最好?(欢迎举例)

就个人而言,我会采用一种std::tstring方法,但我想看看如何在必要的地方进行转换。

0 投票
2 回答
618 浏览

c++ - Visual Studio 2008 C++ 中灵活的字符串处理

我正在慢慢开始掌握 Visual Studio 2008 c++ 中的 _T 东西的窍门,但我仍然无法理解一些事情。我可以看到灵活性的好处,但如果我不能很快获得基础知识,我想我会回到这样做的标准方式 - 少得多混乱。

下面代码的想法是它扫描 -d 的参数,然后将其后的文本存储在字符串变量 fileDir 中。它还忽略任何其他参数。

任何帮助表示赞赏。

0 投票
1 回答
1928 浏览

c++ - 为什么我的 TCHAR 中有垃圾,即使在 ZeroMemory() 之后也是如此?

我继承了以下代码行:

但是,这会失败,因为前 3 个字节被垃圾值填充(尽管总是相同的,-128、-13、23,按此顺序)。我说,好吧,改成:

但是垃圾值仍然存在!请注意,在 ZeroMemory() 调用之后,所有其他字节都被正确清零,并且在 GetModuleFileName() 之后,目录被正确地存储在缓冲区中。就好像 temp 被 temp+3 所取代。这可能与单词边界有关吗?

有人可以解释发生了什么以及如何解决它吗?

0 投票
2 回答
4748 浏览

windows - 区分 TCHAR 和 _TCHAR

Windows 头文件 tchar.h 中定义的两个符号TCHAR和类型之间的各种区别是什么?_TCHAR举例说明。简要描述在代码中使用 TCHAR 而不是 _TCHAR 的场景。(10 分)

0 投票
3 回答
9553 浏览

c++ - Windows C++:LPCTSTR 与 const TCHAR

在我的应用程序中,我在代码顶部附近声明了一个字符串变量,以定义我在调用 RegisterClassEx、CreateWindowEx 等时使用的窗口类的名称。现在,我知道 LPCTSTR 是一个 typedef,最终会跟随一个 TCHAR (以及一个 CHAR 或 WCHAR 取决于是否定义了 UNICODE),但我想知道使用它是否会更好:

或这个:

我个人更喜欢使用来自 JavaScript、PHP、C# 背景的 LPCTSTR,我从未真正考虑过将字符串声明为字符数组。

但实际上使用其中一种是否有任何优势,或者实际上我选择哪一种并没有什么不同?

提前感谢您的回答。

0 投票
2 回答
1666 浏览

c++ - tchar 安全函数 -- UTF-8 常量的计数参数

我正在将一个库从 char 移植到 TCHAR。根据 MSDN,此片段的 count 参数是多字节字符数,而不是字节数。那么,我做对了吗?我在 VC9 中的项目属性说“使用 unicode 字符集”,我认为这是正确的,但我不知道这会如何影响我的计数参数。

“仅在 Windows 平台上受支持,_mbsncmp 和 _mbsnbcmp 是 strncmp 的多字节版本。_mbsncmp 将最多比较 count 个多字节字符,_mbsnbcmp 将最多比较 count 个字节。它们都使用当前的多字节代码页。

_tcsnccmp 和 _tcsncmp 分别是 _mbsncmp 和 _mbsnbcmp 对应的通用函数。_tccmp 等同于 _tcsnccmp。”

一个类似的问题是_tcslen vs _tcslen。

0 投票
2 回答
252 浏览

c++ - 与遗留 TCHAR 代码交互的正确样式

我正在修改广泛使用 TCHAR 的其他人的代码。在我的代码中只使用 std::wstring 是不是更好的形式?wstring 应该等同于 Widechar 平台上的 TString,所以我看不到问题。理由是,使用原始 wstring 比支持 TCHAR 更容易......例如,使用 boost:wformat。

下一个维护者会更清楚哪种风格?我自己浪费了几个小时试图理解字符串的复杂性,似乎只使用 wstring 就会切断你需要理解的一半内容。

...唯一的区别是分配器。

在您的程序落在 Window 9x 机器上的不太可能的情况下,仍然有一个 API 层可以将您的 UTF-16 字符串转换为 8 位字符。使用 TCHAR 进行新代码开发已经没有意义了。 资源