是否有接受unicode的C / C ++ system()函数?
问题:在C / C ++中,是否有接受Unicode的系统函数? 请参阅以下原因:
#include #include 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; }
据我所知,system()并不关心编码,它应该只是通过它。
也许你的问题是“如何在C中键入UTF-8字符串文字”或“osascript期望的编码”?
在C语言中执行UTF-8的可移植方式是使用\ x转义序列,但如果您愿意依赖C99或特定编译器,则通常可以直接键入UTF-8。
我猜osascript期待UTF-8虽然我没有真正的想法。
使用_wsystem
。
_wsystem
是系统的宽字符版本; _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
标准C和C ++根本没有明确地理解Unicode:没有一个标准API被定义为接受或返回Unicode字符串。 与Java不同。 宽字符串或多字节字符串实际上是Unicode编码字符串是依赖于系统的。 所以简单的答案是否定的 。