我需要定义看起来像这样的unicode字符串:
const char SOME_STRING[] = { 0, 5, 0, 'M', 0, 'y', 0, 'S', 0, 't', 0, 'r' };
这是UTF-16BE字符串前面包含大端短的包含长度,它在java中使用,这就是我需要它。是否有更好/更清晰的方式来声明它而不是分别键入每个字符?
答案 0 :(得分:0)
您可以使用wchar_t
代替,根据需要转换为字节,例如:
const wchar_t some_string[] = L"\x05MyStr";
int _tmain(int argc, _TCHAR* argv[])
{
for (int i = 0; i <= some_string[0]; i++)
printf("%d %d ", some_string[i] >> 8, some_string[i] & 0xFF);
return 0;
}
答案 1 :(得分:0)
C和C ++没有定义它们运行的平台的字节序性质如何工作。因此,语言本身无法将16位值序列声明为“大端”。
您需要做的是获取平台本机端的字符串。如果平台的字节序不是大端,则进行字节交换。您可以将字节交换的版本存储在std::vector
或其他类似的文件中。