c++ - 如何在 C++ 中转义白色字符
问题描述
我试图使用 c++ 中的 system 关键字将文件复制到另一个文件夹,只要它不包含白色字符,它就可以正常工作
那么我怎样才能使“修复这个”文件副本没有错误呢?
#include <windows.h>
using namespace std;
void trial(){
//*"fix this" is the file's name that I want to copy*
system("copy fix this C:\\users\\public\\");
system("pause");
}
解决方案
C++ 几乎与此无关。您的问题是如何将空格转义为输入 Windows CMD shell 的命令;一般来说,问题很重要,但在这种情况下,您可以简单地用双引号将文件名括起来,而这又必须像在 C++ 字符串文字中一样被转义:
system("copy \"fix this\" C:\\users\\public\\");
话虽如此,调用 shell 来复制文件是零意义的——你必须处理转义、错误报告、为已经可以从 C++ 完成的事情生成外部进程。
鉴于您已经处于不可移植领域(您的 cmd.exe 命令不可移植到其他 shell),您可以使用CopyFile
API:
if(!CopyFile("fix this", "c:\\users\\public\\fix this", TRUE)) {
std::cout<<"Couldn't copy file\n";
}
此外,从 C++17 开始,终于有了一种标准的、可移植的方式来复制文件。
推荐阅读
- time - 如何在工作流中将 Oozie 的协调器时间传递给 SLA 参数nominal_time?
- typescript - NUXT 在项目位置之外使用共享样式和脚本
- java - 如果我使用 Azure APIM,我应该如何在我的 REST API 中添加授权?
- oop - 如果我创建了一个 A 类的对象,但也存在同名的 A 的重复类,会发生什么?
- html - 在边缘浏览器数据列表下拉字体不同,但在 chrome 中它类似于网站字体
- java - 如何在spark(java)中遍历数据集的所有列
- mongodb - 为什么当条目已经排序时,mongo 不会用 SORT_MERGE 阶段替换 OR 阶段
- laravel - Vue js如何从一个函数在同一页面返回多个v-if条件
- c# - 如何使用 API 导入对话流 zip
- c# - 如何获取访问令牌以使用 MSAL 在控制台应用程序中代表用户调用 MS Graph?