是否有任何C / C ++ system()函数接受unicode?

时间:2011-03-24 12:56:31

标签: c++ c

问题:在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;
}

3 个答案:

答案 0 :(得分:7)

据我所知,

system()并不关心编码,它应该只是通过它。

也许您的问题是“如何在C中键入UTF-8字符串文字”或“osascript期望的编码”?

在C语言中执行UTF-8的可移植方式是使用\ x转义序列,但如果您愿意依赖C99或特定编译器,则通常可以直接键入UTF-8。

我猜osascript期待UTF-8虽然我没有真正的想法。

答案 1 :(得分:5)

使用_wsystem

_wsystemsystem的宽字符版本; _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