gpt4 book ai didi

c++ - 在 cmd pmt 中执行带空格的文件名 从 C++ 程序传递

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:04 26 4
gpt4 key购买 nike

我目前正在努力让我的程序执行一个程序(例如 power point),然后在它旁边添加我要打开的文件的路径。我的程序使用以下方法获取文件路径:

dirIter2->path()

我得到程序和文件的 2 个路径,将它们合并为一个字符串并将它们传递到以下内容中:

系统(PathTotal.c_str())

这很好用,但我唯一的问题是,当文件名中有一个空格时,命令提示符说找不到文件(因为它认为文件名在到达第一个空格时结束。我已经试过了用引号将其包装起来,但它是需要包装的实际文件名。(例如,我试过“C:\users\bob\john is cool”但它需要像这样:C:\users\bob\“john is cool”)

有人对我如何解决这个问题有任何建议吗?我正在考虑获取文件所在文件夹的路径,然后获取文件名。我会用引号将文件名括起来,然后将其添加到文件夹的路径中。我试过像上面那样使用 ->path() 但唯一的问题是它只能转到文件夹目录之外?

是否有一个 boost 命令可以在不获取文件的情况下获取文件的完整路径?

如果谁有更好的建议,我不 promise 这个想法

谢谢

最佳答案

在 C 和 C++ 中,“\”都是转义字符。对于某些东西(比如 '\n' 或 '\t'),它会插入一个控制代码;否则,它只会给你下一个字符。

所以如果你做这样的事情:

fopen("C:\users\bob\john is cool", "r");

它将尝试打开一个名为

C:usersbobjohn is cool

如果你想要输出中的那些'\'字符,你必须转义它们。所以你会想要:

fopen("C:\\users\\bob\\john is cool", "r");

在带有 Visual Studio 的 Windows 上,我也成功地使用了 Unix 风格的分隔符:

fopen("C:/users/bob/john is cool", "r");

事实上,您可以将它们混合起来:

fopen("C:/users\\bob/john is cool", "r");

关于c++ - 在 cmd pmt 中执行带空格的文件名 从 C++ 程序传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com