c++ - 将字符转换为字符串时反斜杠消失

标签 c++ string char backslash

我有一个返回文件夹内容的函数:

void getDir(const char* d, vector<string> & f)
{
    FILE* pipe =  NULL;
    string pCmd = "dir /B /S " + string(d);
    char buf[256];
    if( NULL == (pipe = _popen(pCmd.c_str(),"rt")))
    {
        cout<<"[Expletive deleted]"<<endl;
        return;
    }
    while (!feof(pipe))
    {
        if(fgets(buf,256,pipe) != NULL)
        {
            f.push_back(string(buf));
        }
    }
    _pclose(pipe);
}

问题是字符串 pCMD 应该等于 "dir/B/S c:\Users\Tom",但在将 char 转换为字符串后,它删除了像 "dir/B/S c:UsersTom" 这样的反斜杠。我试过以这些方式调用该函数:

getDir("c:\Users\Tom", files);
getDir("c:/Users/Tom", files);
getDir("c:\\Users\Tom", files);
getDir("c:\\Users\\Tom", files);

但是每次我都会失败(vector files 是空的...)。有人知道我做错了什么吗?

最佳答案

放双反斜杠,因为单反斜杠代表通配符,因此要将反斜杠作为一个字符,它前面应该有另一个反斜杠

关于c++ - 将字符转换为字符串时反斜杠消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27818724/

相关文章:

java 设置字母在一定范围内的循环使用

node.js - TCP数据包中的禁止字符

c++11:字符串文字的恒定时间查找函数

c++ - 为什么我不能将字符串传递给函数 GetDriveTypesA()?

c++ - 关注一个字符串转换函数

java - 反转字符串,不起作用

CodeBlocks exe 停止工作

c++ - 如何在 C++ 中计算 10 位小数精度的 double 变量

c++ - 增加 map 中的值

javascript - 根据最大字符长度拆分字符串,但要考虑单词