在c ++中将单反斜杠转换为双反斜杠

时间:2015-03-08 04:33:09

标签: c++ visual-studio-2010

我有一条路,例如“C:\ home \ my folder”。我想将其转换为“C:\\ home \\ my folder”。请建议我如何使用任何函数调用来执行此操作?

提前致谢。

3 个答案:

答案 0 :(得分:1)

最好的方法是使用Boost字符串算法库。

http://www.boost.org/doc/libs/1_46_1/doc/html/string_algo.html

使用以下命令:

std::string newPath = boost::replace_all_copy(testStr, "\", "\\");

这将导致替换和新形成的字符串。

希望这有帮助。

答案 1 :(得分:1)

#include <iostream>
#include <string>
#include <fstream>


using namespace std;


int main() 
{

    ifstream lire("data.txt",ios::in);
    string text ;
    getline(lire,text);  //text contains your  repertory 
    cout<<text<<endl;    
    for (int i = 0 ; i < text.size();i++) 
    {
        if(text[i] == '\\')
        {
            text.insert(i,"\\") ;
            i++;
        }
    }
    cout<<text<<endl;

return  0;
}

答案 2 :(得分:0)

以下程序适合我。

#include <iostream>
#include <string>

#include <Shlobj.h>

int main()
{
    std::string myPath;
    std::cout << "Enter path to create: ";
    std::cin >> myPath;
    std::cout << "Path from user: " << myPath << "\n";
    ::SHCreateDirectoryEx(nullptr, myPath.c_str(), nullptr);

    return 0;
}

样本运行

正如您所看到的,从用户输入获取的路径仅使用单个反斜杠,但目录已成功创建

Enter path to create: C:\a_path
Path from user: C:\a_path

我认为你追逐错误的问题,假设你问这个问题的原因是因为你对SHCreateDirectoryEx函数的调用失败了。

说明:

  • 当某些Win32 API函数失败时(例如,CraeateDirectory),您必须调用GetLastError来实际获取错误代码,但SHCreateDirectoryEx的情况并非如此(即,它返回直接失败代码)。
  • 如果我使用正斜杠,SHCreateDirectoryEx函数也适用于我。