CString中的find怎么用

DeadManWalk 2009-09-11 11:20:04
我想把一个字符串如C:\XXX\ZZZ\YY.txt中所有的\替换成\\,请问用CString里的函数怎么写啊?
...全文
297 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuharris 2009-09-11
  • 打赏
  • 举报
回复

CString tmp="C:\\XXX\\ZZZ\\YY.txt"; //在C++中\比较特殊 如果表示一个\必须写成\\
tmp.Replace("\\","\\\\");
MessageBox(tmp);







CString::Replace
int Replace( TCHAR chOld, TCHAR chNew );
int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );
返回值
返回被替换的字符数。如果这个字符串没有改变则返回零。
参数
chOld
要被chNew 替换的字符。
chNew
要用来替换chOld 的字符。
lpszOld
一个指向字符串的指针,该字符串包含了要被lpszNew 替换的字符。
lpszNew
一个指向字符串的指针,该字符串包含了要用来替换lpszOld 的字符。
说明
此成员函数用一个字符替换另一个字符。函数的第一个原形在字符串中用chNew
现场替换chOld。函数的第二个原形用lpszNew 指定的字符串替换lpszOld 指定
的子串。
在替换之后,该字符串有可能增长或缩短;那是因为lpszNew 和lpszOld 的长度
不需要是相等的。两种版本形式都进行区分大小写的匹配。
flyskytoday 2009-09-11
  • 打赏
  • 举报
回复

CString tmp="C:\\XXX\\ZZZ\\YY.txt"; //在C++中\比较特殊 如果表示一个\必须写成\\
tmp.Replace("\\","\\\\");
MessageBox(tmp);
我辣椒哥 2009-09-11
  • 打赏
  • 举报
回复
CString::Replace

int Replace( TCHAR chOld, TCHAR chNew );
int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );

返回值:返回被替换的字符数。如果这个字符串没有改变则返回零。

参数: chOld 要被chNew替换的字符。
chNew 要用来替换chOld的字符。
lpszOld 一个指向字符串的指针,该字符串包含了要被lpszNew替换的字符。
lpszNew 一个指向字符串的指针,该字符串包含了要用来替换lpszOld的字符。

说明:
此成员函数用一个字符替换另一个字符。函数的第一个原形在字符串中用chNew现场替换chOld。函数的第二个原形用lpszNew指定的字符串替换lpszOld指定的子串。
在替换之后,该字符串有可能增长或缩短;那是因为lpszNew和lpszOld的长度不需要是相等的。两种版本形式都进行区分大小写的匹配。

示例:
// 第一个例子,old 和new具有相同的长度。
CString strZap( "C--" );
int n = strZap.Replace('-', '+' );
ASSERT( n == 2 );
ASSERT(strZap == "C++" );
// 第二个例子,old和new具有不同的长度。
CString strBang("Everybody likes ice hockey");
n = strBang.Replace( "hockey", "golf" );
ASSERT( n == 1 )
n = strBang.Replace ( "likes" , "plays" );
ASSERT( n == 1 )
n = strBang.Replace( "ice", NULL );
ASSERT( n == 1 )
ASSERT( strBang == "Everybody plays golf" )
// 注意,现在在你的句子中有了一个额外的空格。
// 要移走这个额外的空格,可以将它包括在要被替换的字符串中,例如,“ice”。
我辣椒哥 2009-09-11
  • 打赏
  • 举报
回复
CString str=C:\XXX\ZZZ\YY.txt
str.Replace("\\", "\\\\");

这样
副组长 2009-09-11
  • 打赏
  • 举报
回复
运行下这个看看。

CString csSrc = _T("C:\\XXX\\ZZZ\\YY.txt");
CString csDst;
int x;
for(;;)
{
x = csSrc.Find('\\');
if( x == -1) break;
csDst += csSrc.Left(x+1)+'\\';
csSrc = csSrc.Right(csSrc.GetLength()-x-1);
}
csDst+=csSrc;
岁月小龙 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 youyifang 的回复:]
str.Replace("\\", "\\\\");

[/Quote]
非常正确
tanker1024 2009-09-11
  • 打赏
  • 举报
回复
关注
feilinhe 2009-09-11
  • 打赏
  • 举报
回复
使用CString类的Replace函数
youyifang 2009-09-11
  • 打赏
  • 举报
回复
str.Replace("\\", "\\\\");
山伟 2009-09-11
  • 打赏
  • 举报
回复
路有很多条,每条都能到罗马~

上面说的都很对!
山伟 2009-09-11
  • 打赏
  • 举报
回复
将路径中的单’\’变为’\\’


CMyDoc *pDoc=GetDocument();

CString reportPath = pDoc -> strPathName;

int lentemp = reportPath.GetLength();

reportPath = reportPath.Left(lentemp-4);

int lenpath = reportPath.GetLength();

for(int i=0; i<lenpath-1; ) {

if(reportpath.GetAt(i) = = ‘\\’) {

reportpath.Insert(i, ‘\\’);

i+=2; }

i++;
}
幸福官 2009-09-11
  • 打赏
  • 举报
回复
上面回答的都是正确的,LZ不应该用find,该用Replace方法就OK了!

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧