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 ");"
应该怎么改正?错误在哪里? 展开
用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 ");"
应该怎么改正?错误在哪里? 展开
推荐于2017-10-08 · 知道合伙人软件行家
关注
展开全部
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”。
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”。
展开全部
\\合起来算是一个字符,所以 "\" 这个必然报错,下面有个用例,希望有所帮助
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 = '\\';//同上
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 = '\\';//同上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
记得转义字符 那么就是
int n = ss.Replace(L"\\",L"\\\\");
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算一行
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询