还有必要再重复一下C++字符串和C字符串转换的问题,许多人会遇到这样的问题,自己做的程序要调用别人的函数、类什么的(比如数据库连接函数Connect(char*,char*)),但别人的函数参数用的是char*形式的,而我们知道,c_str()、data()返回的字符数组由该字符串拥有,所以是一种const char*,要想作为上面提及的函数的参数,还必须拷贝到一个char*,而我们的原则是能不使用C字符串就不使用。那么,这时候我们的处理方式是:如果此函数对参数(也就是char*)的内容不修改的话,我们可以这样Connect((char*)UserID.c_str(), (char*)PassWD.c_str()),但是这时候是存在危险的,因为这样转换后的字符串其实是可以修改的(有兴趣地可以自己试一试),所以我强调除非函数调用的时候不对参数进行修改,否则必须拷贝到一个char*上去。当然,更稳妥的办法是无论什么情况都拷贝到一个char*上去。同时我们也祈祷现在仍然使用C字符串进行编程的高手们(说他们是高手一点儿也不为过,也许在我们还穿开裆裤的时候他们就开始编程了,哈哈…)写的函数都比较规范,那样我们就不必进行强制转换了。
#include
#include
using namespace std;
cout<<"use []:"<
for(int i=0; i
{
cout<
}
cout<
cout<<"use at():"<
for(int i=0; i
{
cout<
}
cout<
cin.get();
}
21)
#include
#include
using namespace std;
cout<<"use at():"<
int i;
for(i=0; i
{
cout<<"c_str() : "<
cout<<"data() : "<
}
cout<<"c_str() : "<
cout<<"data() : "<
cout<
cin.get();
}
22)
// substr() 返回某个子字符串
#include
#include
using namespace std;
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221778.html原文链接:https://javaforall.net
