VC++ 字符替换问题请教!
#include"stdafx.h"#include<string>usingnamespacestd;intmain(){stringa="E:\VC++\dll";/...
#include "stdafx.h"
#include <string>
using namespace std;
int main()
{
string a="E:\VC++\dll"; /*任意给一个字符串 或者从键盘读入也行*/
string::size_type pos = 0; /*定义一个pos表示位置*/
while ((pos = a.find_first_of("\",pos)) != string :: npos)
/*从pos位置开始查找字符串"//",查到之后记录pos的位置并覆盖原pos,直到查到字符串结尾时跳出while循环。*/
{
a.replace(pos,1,"\\"); //“//”改为"\\"
pos++;
} /* 继续查找下一处"//";*/
printf("%s\n",a.c_str());
return 0;
}
string a="E:\VC++\dll"; 这句出错换成string a="E:/VC++/dll"; 才行
这是一个接收用户在编辑框地址的字符串
正常格式是string a="E:\VC++\dll";
而string a="E:/VC++/dll" 或string a="E:\\VC++\\dll"有点感觉不方便
有没有什么方法呢?? 展开
#include <string>
using namespace std;
int main()
{
string a="E:\VC++\dll"; /*任意给一个字符串 或者从键盘读入也行*/
string::size_type pos = 0; /*定义一个pos表示位置*/
while ((pos = a.find_first_of("\",pos)) != string :: npos)
/*从pos位置开始查找字符串"//",查到之后记录pos的位置并覆盖原pos,直到查到字符串结尾时跳出while循环。*/
{
a.replace(pos,1,"\\"); //“//”改为"\\"
pos++;
} /* 继续查找下一处"//";*/
printf("%s\n",a.c_str());
return 0;
}
string a="E:\VC++\dll"; 这句出错换成string a="E:/VC++/dll"; 才行
这是一个接收用户在编辑框地址的字符串
正常格式是string a="E:\VC++\dll";
而string a="E:/VC++/dll" 或string a="E:\\VC++\\dll"有点感觉不方便
有没有什么方法呢?? 展开
展开全部
既然是编辑框了,你用的是MFC吧。
MFC里面的CString类比这个功能强大多了。
直接 CString a="E:\VC++\dll";
a.Replace('\','/');
就行了,这两句话跟你上边写那么多的功能是一样的。
你可以好好看一下CString这个类,基本上关于字符串所有的操作,这里面都有封装的函数。用起来很方便,MFC必须熟练使用的类之一。
MFC里面的CString类比这个功能强大多了。
直接 CString a="E:\VC++\dll";
a.Replace('\','/');
就行了,这两句话跟你上边写那么多的功能是一样的。
你可以好好看一下CString这个类,基本上关于字符串所有的操作,这里面都有封装的函数。用起来很方便,MFC必须熟练使用的类之一。
追问
strrr="F:\移动工具\dll文件库\"; //原路径出错要写成\\
GetDlgItemText(IDC_EDIT1,str); //文件名
GetDlgItemText(IDC_EDIT2,strr); //默认目标地址 C:\\
GetDlgItemText(IDC_EDIT3,strr); //自定义目标地址 E:\\
编辑框中输入的地址一定要是C:\\ ,如果输入成C:\就会出错
追答
这个应该不会吧,我以前也做过类似的啊,不过如果出问题,也很简单,在后台加个处理就行了
strr.Replace('\','/');
strr.Replace("/","\\");
这样加上处理就行了,
我没有试验直接用strr.Replace("\","\\");
这个可能会出错,也可能不出错,你可以试一下,不过第一种写法一定是对的。
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询