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

时间:2011-10-15 02:15:01

标签: c++ winapi

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

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

2 个答案:

答案 0 :(得分:1)

在实践中,这根本不重要。

也就是说,Win32 API需要LPSTRLPWSTR s,因此任何不是“其中之一”的东西都必须首先转换为相应的char*类型,所以需要做一点额外的工作。

我认为更大的考虑因素是使用方便/熟悉/易于使用的数据类型。

答案 1 :(得分:1)

字符串数据类型与上面使用的内联字符串之间的一个区别是,使用单独的命名引用(无论类型是字符串还是字符数组)可以防止更改字符串的常见错误但忘记更改sizeof()内的副本。如果新字符串的长度不同,则会产生不良后果。有一个允许您同时更新的地方,无论是通过const char *还是字符串数据类型,都是更好的做法。

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