微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用system时如何处理路径内的空格?

如何解决使用system时如何处理路径内的空格?

| 我还是C ++的新手,正在研究一种在C ++程序中打开程序的方法。 问题是,每当路径中有空格时,它就会将其视为不同的参数。
int _tmain(int argc,_TCHAR* argv[])
{
    system(\"C:\\\\Users\\\\blah\\\\Desktop\\\\a\\\\ b.txt\");
    return 0;
}
我收到的输出是:
\'C:\\Users\\blah\\Desktop\\a\\\' is not recognized as an internal or external command,operable program or batch file.
    

解决方法

您可以用双引号括住字符串文字。编辑:还只是注意到您的反斜杠没有转义,所以在下面:P更新
system(\"\\\"C:\\\\Users\\\\blah\\\\Desktop\\\\a\\\\ b.txt\\\"\");
还请注意,您确实不应使用
system
。尝试使用fork,spawn或什至是非官方的boost.process类,根据您的需求,该类的功能类似于.NET process类。还考虑一下为什么需要从某个流程启动一个流程……也许您可以创建一个库?     ,在Unix上,您可以使用fork()+ exec()。 在Windows上,检出spawn。 它们直接执行程序,避免了命令解释器解释程序,从而避免对特殊字符(如空格)进行任何特殊处理。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。