首页 > 解决方案 > 如何在 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++

解决方案


C++ 几乎与此无关。您的问题是如何将空格转义为输入 Windows CMD shell 的命令;一般来说,问题很重要,但在这种情况下,您可以简单地用双引号将文件名括起来,而这又必须像在 C++ 字符串文字中一样被转义:

system("copy \"fix this\" C:\\users\\public\\");

话虽如此,调用 shell 来复制文件是零意义的——你必须处理转义、错误报告、为已经可以从 C++ 完成的事情生成外部进程。

鉴于您已经处于不可移植领域(您的 cmd.exe 命令不可移植到其他 shell),您可以使用CopyFileAPI

if(!CopyFile("fix this", "c:\\users\\public\\fix this", TRUE)) {
    std::cout<<"Couldn't copy file\n";
}

此外,从 C++17 开始,终于有了一种标准的、可移植的方式来复制文件


推荐阅读