MFC VS2010 写一个函数把Edit框里的CString字符串逐个转换为char[]字符数组。

MFC VS2010 写一个函数把Edit框里的CString字符串逐个转换为char[]字符数组。,第1张

假定楼主的环境是UNICODE型。

#include<atlconvh>

CEdit m_edit;

CString strText;

// 获取edit控件的字符串

m_editGetWindowText(strText);

WCHAR pText = strTextBuffer(strTextGetLength());

// 转换成char指针

USES_CONVERSION;

char p = W2A(pText);

// 最后楼主可以用strcpy将char指针的内容,写入到字符数组里了。这个就不写了。

/功能:将str字符串中的oldstr字符串替换为newstr字符串

参数:str: *** 作目标oldstr:被替换者newstr:替换者

返回值:返回替换之后的字符串

版本:V02

/

charstrrpc(charstr,charoldstr,charnewstr){

char bstr[strlen(str)];//转换缓冲区

memset(bstr,0,sizeof(bstr));

for(int i=0;i&lt;strlen(str);i++){

if(!strncmp(str+i,oldstr,strlen(oldstr))){//查找目标字符串

strcat(bstr,newstr);

i+=strlen(oldstr)-1;

}else{

strncat(bstr,str+i,1);//保存一字节进缓冲区

}

}

strcpy(str,bstr);

return str;

}

扩展资料:

c_str函数的返回值是constchar的,不能直接赋值给char,所以就需要我们进行相应的 *** 作转化,下面就是这一转化过程。

c++语言提供了两种字符串实现,其中较原始的一种只是字符串的c语言实现。与C语言的其他部分一样,它在c++的所有实现中可用,我们将这种实现提供的字符串对象,归为c-串,每个c-串char类型的。

标准头文件&lt;cstring&gt;包含 *** 作c-串的函数库。这些库函数表达了我们希望使用的几乎每种字符串 *** 作。

当调用库函数,客户程序提供的是string类型参数,而库函数内部实现用的是c-串,因此需要将string对象,转化为char对象,而c_str()提供了这样一种方法,它返回const char类型(可读不可改)的指向字符数组的指针。例:

#include&lt;iostream&gt;

//#include&lt;cstring&gt;

#include&lt;string&gt;//使用头文件string,否则最后cout&lt;&lt;无法输出add_to

using namespace std;

int main()

{

string add_to="hello!";

const string add_on="baby";

const charcfirst=add_toc_str();

const charcsecond=add_onc_str();

charcopy=new char[strlen(cfirst)+strlen(csecond)+1];

strcpy(copy,cfirst);

strcat(copy,csecond);

add_to=copy;

cout&lt;&lt;"copy:"&lt;&lt;copy&lt;&lt;endl;

delete[]copy;

cout&lt;&lt;"add_to:"&lt;&lt;add_to&lt;&lt;endl;

return 0;

}

例(1)

函数声明:const charc_str();

c_str()函数返回一个指向正规C字符串的指针,内容与本string串相同

这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string对象转换成c中的字符串样式。

注意:一定要使用strcpy()函数等来 *** 作方法c_str()返回的指针

比如:最好不要这样:

charc;

string s="1234";

c=sc_str();

//c最后指向的内容是垃圾,因为s对象被析构,其内容被处理(纠正:s对象的析构是在s的生命周期结束时,例如函数的返回)

参考资料:

——c_str

//第一种方法(stl)

#include <string>

using std::string;

void rep1() 

{

string s = "abcde";

string f = "bcd";

string r = "123";

string::size_type i = sfind(f);

if(i != string::npos)

{

sreplace(i,flength(),r);

printf(sc_str());

}

} //第二种方法(MFC):

 void rep2() 

{

CString s = "abcde";

CString f = "bcd";

CString r = "1234";

sReplace(f,r);

AfxMessageBox(s);

}

把代码写在一个函数中

最基本就是写在 main 函数中

因为程序一启动就执行main函数

或者其他函数中,变量的声明在外面是全局变量,在函数里面是局部变量,在类里面是类成员变量

那个是变量的申明。

Replace是函数,必须放在函数中调用执行

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12175651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存