问题:在C / C ++中,是否有接受Unicode的系统函数? 请参阅以下原因:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
// http://stackoverflow.com/questions/3313332/bringing-another-apps-window-to-front-on-mac-in-c
system("osascript -e \"tell application \\\"Address Book\\\" to activate\"");
return EXIT_SUCCESS;
}
答案 0 :(得分:7)
system()并不关心编码,它应该只是通过它。
也许您的问题是“如何在C中键入UTF-8字符串文字”或“osascript期望的编码”?
在C语言中执行UTF-8的可移植方式是使用\ x转义序列,但如果您愿意依赖C99或特定编译器,则通常可以直接键入UTF-8。
我猜osascript期待UTF-8虽然我没有真正的想法。
答案 1 :(得分:5)
使用_wsystem
。
_wsystem
是system
的宽字符版本; _wsystem
的命令参数是一个宽字符串。否则这些函数的行为相同。
http://msdn.microsoft.com/en-us/library/277bwbdz.aspx
名为main
的特殊函数是所有C和C ++程序的执行起点。如果您正在编写符合Unicode编程模型的代码,则可以使用wmain
,这是main的宽字符版本。
http://msdn.microsoft.com/en-us/library/vstudio/6wd819wh.aspx
答案 2 :(得分:2)
标准C和C ++根本没有明确地理解Unicode :没有一个标准API被定义为接受或返回Unicode字符串。与Java不同。 宽字符串或多字节字符串实际上是否为Unicode编码字符串取决于系统。所以简单的答案是 no 。