我有一条路,例如“C:\ home \ my folder”。我想将其转换为“C:\\ home \\ my folder”。请建议我如何使用任何函数调用来执行此操作?
提前致谢。
答案 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
函数的调用失败了。
GetLastError
来实际获取错误代码,但SHCreateDirectoryEx
的情况并非如此(即,它返回直接失败代码)。SHCreateDirectoryEx
函数也适用于我。