MFC CString Replace函数

我希望把c:\a\b\c\aa.txt字符串转变成C:\\a\\b\\c\\aa.txt用CString的Replace函数intn=ss.Replace(L"\",L"... 我希望把 c:\a\b\c\aa.txt 字符串转变成 C:\\a\\b\\c\\aa.txt
用CString的Replace函数
int n = ss.Replace(L"\",L"\\");
但是编译的时候出现了很多错误
1>f:\毕业设计\test5\test5\readdata.cpp(24) : error C2017: illegal escape sequence
1>f:\毕业设计\test5\test5\readdata.cpp(24) : error C2017: illegal escape sequence
1>f:\毕业设计\test5\test5\readdata.cpp(24) : error C2001: newline in constant
1>f:\毕业设计\test5\test5\readdata.cpp(24) : error C2308: concatenating mismatched strings
1> Concatenating wide "",L" with narrow ");"

应该怎么改正?错误在哪里?
展开
 我来答
lgao622
推荐于2017-10-08 · 知道合伙人软件行家
lgao622
知道合伙人软件行家
采纳数:1137 获赞数:6548
毕业于武汉工程大学邮电与信息工程学院通信专业,软件行业,4年工作经验。

向TA提问 私信TA
展开全部
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”。
迷途中的香烟
2012-04-16 · 超过25用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:52.4万
展开全部
\\合起来算是一个字符,所以 "\" 这个必然报错,下面有个用例,希望有所帮助

CString str = "c:\11\22\33.txt";
TRACE (str);//输出为乱码c: ...txt
TRACE ("\n");

CString ss = "c:\\11\\22\\33.txt";
TRACE (ss);//输出为c:\11\22\33.txt
TRACE ("\n");

int nnnn = ss.Replace("\\","\\\\");
TRACE (ss);//输出为c:\\11\\22\\33.txt
TRACE ("\n");

char a = '\\';//=92 具体看ASCII表
int aa = '\\';//同上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海雄风2009
2012-04-16 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2752万
展开全部
记得转义字符 那么就是

int n = ss.Replace(L"\\",L"\\\\");
更多追问追答
追问
那么一张txt数据表里面,数据类型是这样的
1 1 22 32 343
23 34 45 34 34
23 34 44 4 32
这样一张数据表,我要知道这张数据表总共有多少行,应该用什么函数呢?
如果我要一行一行读取,是不是file.ReadString( szLine )就行了?
追答
知道多少行 就用file.ReadString( szLine )  一直到完毕为止

或者单个读 读到一个\n算一行
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式