今天同学问到C++的一个问题:“ 将字符串%abv%a中的%a 替换掉,将字符串变为cbvc”,之前没整过这个,想到应该相应的函数吧。到网上一查:可以使用字符串的Replace函数,具体说明如下:
CString::Replaceint 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 的长度不需要是相等的。两种版本形式都进行区分大小写的匹配。
代码示例:
CString s1="%abv%a";
CString s2="c";
int word=s1.Replace("%a",s2);
cout<<s1<<endl;
新建工程写代码的时候,遇到错误,CString是没定义的类型,以为只要包含String.h就行了,结果还是报错,一查才知道应该包含“afx.h”,包含了“afx.h”后还是有错
Compiling...
CReplaceChar.cpp
Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/CReplace.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
CReplaceChar.cpp
Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/CReplace.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
修改配置,“Project-Settings-General"里改成”Using MFC in a Static Library“即可。