CString/string/char*/char[]/int/float相互转化

本文介绍了在MFC编程中常见的字符串类型(CString、char*、int等)之间的转换方法,并对比了不同字符串类型的特点,包括string与CString的区别,以及如何在实际编程中灵活运用这些转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

声明:在网上找的,稍加整理
利用MFC,我对话框中利用GetWindowText得到的字符串是CString型,CString是属于MFC的而一些C/C++函数是不能直接CString行操作的,所以我们经常遇到将CStringchar*等等其他数据型的情况。总结备忘于此!
首先要明确,C中是不存在string型的,stringC++充字符串操作的一个。但是我知道C中有string.h文件,里要区分清楚,此string非彼stringstring.h文件中定了一些我们经常用到的操作字符串的函数,如:strcpystrcatstrcmp等等,但是些函数的操作象都是char*指向的字符串。 而C++string操作象是string型字符串,该类重装了一些运算符,添加了一些字符串操作成函数,使得操作字符串更加方便。有的候我要将string串和char*串配合使用,所以也会涉及到两个型的问题
1.CString和string的
stringstr="ksarea";
CStringcstr(str.c_str());//或者CString cstr(str.data());初始化才行
cstr=str.c_str();或者cstr=str.data();
str=cstr.GetBuffer(0); //CString -> string
cstr.format("%s", str.c_str()); //string->CString
cstr.format("%s", str.data()); //string->CString
str = LPCSTR(cstr); //CString->string
/*c_str()和data()区是:前者返回'/0'的字符串,后者返回不'/0'的字符串*/
2.CString和int的转换
inti=123;
CStringstr;
str.format("%d",i);//int->CString
其他的基本
i=atoi(str);//CString->int 有(atof,atol)
3.char*和CString的转换
CStringcstr="ksarea";
char* ptemp=cstr.getbuffer(0);
char* str;
strcpy(str,ptemp);//CString->char*
cstr.releasebuffer(-1);

char*str="lovesha";
CStringcstr=str;//char*->CString string
型不能直接赋值给CString
至于intfloatstringchar*化可以使用化,或者函数行。CString与其他型的化方法很多,但其都殊途同,朝着一个方向即将型首先char*型,因char*是不同型之梁。得到char*型,其他型就非常容易了。
常用算法
a)      

作用
char*
string
CString
找指定
strchr
strstr
strrstr
strspn
find
Find
第一个匹配的
 
fild_first_of
FindOneOf
从后面开始
 
 
ReserveFind
指定匹配方式
 
find_if
 
注:find_if中是把范内的挨个代入匹配函数直至返回true
b)     

作用
char*
string
CString
找指定(区分大小写)
strcmp
strncmp
strcoll
_strncoll
operator<
operator>
operator<=
operator>=
operator==
operator!=
Collate
Compare
找指定(不区分大小写)
_stricmp
_strnicmp
_stricoll
_strnicoll
 
CollateNoCase
CompareNoCase
注:返回如果<0前面的小于后面的,反之亦然
c)     

作用
char*
string
CString
找指定
_strset
_strnset
replace
replace_copy
replace_copy_if
replace_if
Replace
d)      插入

作用
char*
string
CString
找指定
 
insert
Insert
 
/** * @struct RKLLMParam * @brief Defines the parameters for configuring an LLM instance. */ typedef struct { const char* model_path; /**< Path to the model file. */ int32_t max_context_len; /**< Maximum number of tokens in the context window. */ int32_t max_new_tokens; /**< Maximum number of new tokens to generate. */ int32_t top_k; /**< Top-K sampling parameter for token generation. */ float top_p; /**< Top-P (nucleus) sampling parameter. */ float temperature; /**< Sampling temperature, affecting the randomness of token selection. */ float repeat_penalty; /**< Penalty for repeating tokens in generation. */ float frequency_penalty; /**< Penalizes frequent tokens during generation. */ float presence_penalty; /**< Penalizes tokens based on their presence in the input. */ int32_t mirostat; /**< Mirostat sampling strategy flag (0 to disable). */ float mirostat_tau; /**< Tau parameter for Mirostat sampling. */ float mirostat_eta; /**< Eta parameter for Mirostat sampling. */ bool skip_special_token; /**< Whether to skip special tokens during generation. */ bool is_async; /**< Whether to run inference asynchronously. */ const char* img_start; /**< Starting position of an image in multimodal input. */ const char* img_end; /**< Ending position of an image in multimodal input. */ const char* img_content; /**< Pointer to the image content. */ RKLLMExtendParam extend_param; /**< Extend parameters. */ } RKLLMParam; /** * @brief Creates a default RKLLMParam structure with preset values. * @return A default RKLLMParam structure. */ RKLLMParam rkllm_createDefaultParam();转换为node ffi代码
03-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值