关于将字符串传递给win32 api函数

Regarding passing strings to win32 api functions

本文关键字:win32 api 函数 字符串      更新时间:2023-10-16

我想知道使用string数据类型而不是字符数组或简单的字符串是否有任何优势(仅适用于较短的字符串),例如:

TextOut(hDC, 10, 10, "Hello", sizeof("HEllO") - 1)

在实践中,这一点都不重要。

也就是说,Win32 api需要LPSTR s或LPWSTR s,所以任何不是"其中之一"的东西首先必须转换为适当的char*类型,因此需要非常小的一点额外的工作。

我想说,更大的考虑是使用方便/熟悉/易于使用的数据类型。

字符串数据类型和您在上面使用的内联字符串之间的一个区别是,使用单独的命名引用(无论类型是字符串还是字符数组)可以防止更改字符串但忘记更改sizeof()内部副本的常见错误。如果新字符串的长度不同,则会产生不希望看到的结果。有一个地方可以让你同时更新两者,无论是通过const char*还是字符串数据类型,这是一个更好的做法。

const TCHAR TEXTOUT_TEXT[] = _T("Hello");
TextOut( hDC, 10, 10, TEXTOUT_TEXT, sizeof(TEXTOUT_TEXT) / sizeof(TEXTOUT_TEXT[0]) - 1 );