我想知道使用string
数据类型而不是char数组是否有任何优势(仅适用于较短的字符串),或者只是字符串如下:
TextOut(hDC, 10, 10, "Hello", sizeof("HEllO") - 1)
答案 0 :(得分:1)
在实践中,这根本不重要。
也就是说,Win32 API需要LPSTR
或LPWSTR
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 );