我尝试在字符串中插入一个\字符,这样我就可以得到
用C:\Users\dave\Desktop\XY.txt代替C:\Users\georg\Desktop\XY.txt
以下是代码,但由于某些原因,它不能工作
string q="C:\Users\georg\Desktop\XY.txt";
char x='\\';
for (int i = 0; i < q.length(); ++i) {
if (q[i] == '\\')
q.insert(i,4,x);
}发布于 2016-05-17 03:20:08
只需写
string q="C:\\Users\\georg\\Desktop\\XY.txt";或使用原始字符串文字
string q=R"(C:\Users\georg\Desktop\XY.txt)";发布于 2016-05-17 03:20:25
您应该在引号中使用\来添加单个。所以你的第一行就是问题所在。它应该是
string q="C:\\Users\\georg\\Desktop\\XY.txt";然后剩下的就可以用了。
编辑
经过额外的解释,我发现了后续代码的问题。应将其固定为以下值:
for (int i = 0; i < q.length(); ++i) {
if (q[i] == '\\') {
q.insert(i,1,x);
i++;
}
}我来解释一下,首先,你只需要1个额外的\所以insert的第二个参数应该是1。在插入之后,你需要跳过inserted \,因此i++;
发布于 2016-05-17 03:36:23
目标
在字符串中找到的每个字符串中添加一个额外的反斜杠(用于另一个程序)
当前问题
for循环一次插入4个反斜杠,因此永远不会到达末尾。使用C++11的解决方案
这将为每个已经存在的值添加一个反斜杠:
#include <iostream>
#include <string>
int main()
{
std::string q = R"(C:\Users\georg\Desktop\XY.txt)";
char x='\\';
for (int i = 0; i < q.length(); ++i) {
if (q[i] == '\\') {
q.insert(++i,1,x);
}
}
return 0;
}不带原始字符串的解决方案
#include <iostream>
#include <string>
int main()
{
//std::string q = R"(C:\Users\georg\Desktop\XY.txt)";
std::string q = "C:\\Users\\georg\\Desktop\\XY.txt";
char x='\\';
for (unsigned i = 0; i < q.length(); ++i) {
if (q[i] == '\\') {
q.insert(++i,1,x);
}
}
std::cout << q;
return 0;
}Result
C:\\Users\\georg\\Desktop\\XY.txthttps://stackoverflow.com/questions/37261569
复制相似问题