技术标签: path string null insert 编程 mfc
1. CString 转 wchar_t
CString path = "asdf";
wchar_t wstr[256] = path.AllocSysString();
或者:
wchar_t wcstring[256];
MultiByteToWideChar(CP_ACP,0,path,-1,wcstring,256);
2. wchar_t转CString
WideCharToMultiByte(CP_ACP,0,wcstring,256,path.GetBuffer(0),256,NULL,NULL);
path.ReleaseBuffer(0);
3. string 转 CString
CString.format("%s", string.c_str());
4. char 转 CString
CString.format("%s", char*);
5. char 转 string
string s(char *);
6. string 转 char *
char *p = string.c_str();
7.CString 转 string
string s(CString.GetBuffer());
CString str = "fdjfdas";
string s = (LPCTSTR)str;
1,string -> CString
CString.format("%s", string.c_str());
用c_str()确实比data()要好.
2,char -> string
string s(char *);
你的只能初始化,在不是初始化的地方最好还是用assign().
3,CString -> string
string s(CString.GetBuffer());
GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
《C++标准函数库》中说的
有三个函数可以将字符串的内容转换为字符数组和C—string
1.data(),返回没有”/0“的字符串数组
2,c_str(),返回有”/0“的字符串数组
3,copy()
---------------------------------------------------------------
CString与int、char*、char[100]之间的转换- -
CString与int、char*、char[100]之间的转换- -
CString互转int
将字符转换为整数,可以使用atoi、_atoi64或atol。
而将数字转换为CString变量,可以使用CString的Format函数。如
CString s;
int i = 64;
s.Format("%d", i)
Format函数的功能很强,值得你研究一下。
void CStrDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString ss="1212.12";
int temp=atoi((char*)LPCTSTR(ss));
CString aa;
aa.Format("%d",temp);
AfxMessageBox("var is " + aa);
}
sart.Format("%s",buf);
CString互转char*
///char * TO cstring
CString strtest;
char * charpoint;
charpoint="give string a value";
strtest=charpoint;
///CString TO char *
charpoint=strtest.GetBuffer(strtest.GetLength());
标准C里没有string,char *==char []==string
char *转成CString
可以用CString.Format("%s",char *)这个方法来将char *转成CString。
CString转成char *
用操作符(LPCSTR)strtest 或者 (char*)(LPCSTR)strtest 就可以了。
CString转换 char[100]
char a[100];
CString str("aaaaaa");
strncpy(a,(LPCTSTR)str,sizeof(a));
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1570001
(一) 概述
string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;
CString(typedef CStringT > CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),TCHAR(ANSI与unicode均可);
char*为C编程中最常用的字符串指针,一般以'/0'为结束标志;
(二) 构造
string是方便的,可以从几乎所有的字符串构造而来,包括CString和char*;
CString次之,可以从基本的一些字符串变量构造而来,包括char*等;
char*没有构造函数,仅可以赋值;
举例:
char* psz = “joise”;
CString cstr( psz );
string str( cstr );
(三) 运算符重载
a) operator=
string是最方便的,几乎可以直接用所有的字符串赋值,包括CString和char*;
CString次之,可以直接用些基本的字符串赋值,包括char*等;
char*只能由指针赋值,并且是极危险的操作,建议使用strcpy或者memcpy,而且char*在声明的时候如未赋初值建议先设为NULL,以避免野指针,令你抓狂;
举例:
char *psz = NULL;
psz = new char[10]; //当然,以上的直接写成char *psz = new char[10];也是一样
memset( psz, 0, 10 );
strcpy( psz, “joise” );
CString cstr;
cstr = psz;
string str;
str = psz;
str = cstr;
delete []psz;
b) operator+
string与CString差不多,可以直接与char*进行加法,但不可以相互使用+运算符,即string str = str + cstr是非法的,须转换成char*;
char*没有+运算,只能使用strcat把两个指针连在一起;
举例:
char* psz = “joise”;
CString cstr = psz;
cstr = cstr + psz;
string str = psz;
str = str + str + psz;
strcat( psz, psz );
strcat( psz, cstr );//合法
strcat( psz, str );//非法,由此可见,CString可自动转换为const char*,而string不行
c) operator +=
string是最强大的,几乎可以与所有的字符串变量+=,包括CString和char*;
CString次之,可以与基本的一些字符串变量进行+=而来,包括char*等;
char*没有+=运算符,只能使用strcat把两个指针连在一起;
d) operator[]
CString最好,当越界时会抛出断言异常;
string与char*下标越界结果未定义;
举例:
char* psz = “joise”;
CString cstr = psz;
cout << cstr[8];
string str = psz;
cout << str[8];
cout << psz[8];
e) operator== 、operator!=、operator> 、operator< 、operator>= 、perator<=
CString与string之间不可以进行比较,但均可以与char*进行比较,并且比较的是值,而不是地址;
cout << ( psz == cstr );
cout << ( psz == str );
cout << ( str == psz );
cout << ( cstr == psz );//以上代码返回均为1
(四) 常用算法
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
CompareNoCas
注:返回值如果<0则前面的值小于后面的值,反之亦然
c) 替换
作用 char* string CString 查找指定值 _strset
_strnset
replace
replace_copy
replace_copy_if
replace_if Replace
d) 插入
作用 char* string CString 查找指定值 insert Insert
e) 增加 作用 char* string CString 动态增加值 strcat push
append Append
AppendChar
AppendFormat
f) 截取
作用 char* string CString 得到部分值 用下标操作 substr Left
Mid
Right
Truncate
g) 移除
作用 char* string CString 移除部份值 remove Remove 移除空白值 RemoveBlanks
注:此为ATL提供,非C函数 remove_if Trim
TrimLeft
TrimRig
h) 转换大小写
作用 char* string CString 转换大小写 _strlwr
_strupr MakeLower
MakeUpper
i) 与其他类型转换
作用 char* string CString 转化为数字 atoi
atod
atof Format 转化为char* c_str
GetBuffer
GetBufferSetLen
j) 格式化
作用 char* string CString 格式化 sprintf Format
k) 得到长度
作用 char* string CString
得到长度 strlen length GetLength 得到大小 size GetAllocLength
l) 判断为空
作用 char* string CString 判断是否为空判断是否==NULL或者第一个字符是否是'/0' empty IsEmpty
m) 重定义大小
作用 char* string CString 重定义大小 realloc
new resize GetBufferSetLength
n) 释放资源
作用 char* string CString 释放 free
delete (delete[]) ReleaseBuffer
ReleaseBufferSetLength
(五) 安全性>
CString > string > char*;
(六) 灵活性
CString > string >char*;
(七) 可移植性
char* = string > CString
*****************
CHAR 转CString之间等于就可以了啊!
题目:Rachel_Zhang的“压缩感知”之“”HelloWorld"解读
网传一张图PO(Persistant Object)持久对象PO比较好理解简单说PO就是数据库中的记录,一个PO的数据结构对应着库中表的结构,表中的一条记录就是一个PO对象通常PO里面除了get,set之外没有别的方法对于PO来说,数量是相对固定的,一定不会超过数据库表的数量等同于Entity,这俩概念是一致的BO(Business Object)业务对象BO就是PO的组合简单的例子比如说PO是一条交易记录,BO是一个人全部的交易记录集合对象复杂点儿的例子P.
Labelme制作Mask-Rcnn数据集步骤。一、安装anaconda查看博客https://mp.csdn.net/postedit/85069386二、安装labelme 1、打开anaconda prompt2、conda create --name=labelme python=3.5(创建名称为labelme的环境,Python版本为3.5)3、activat...
下载压缩包并解压缩,找到“ Install.bat”文件,右键单击-“以管理员身份运行”,它将无法正常工作,估计直接双击即可,您必须以管理员! !记住~~记住~~~! ,出现安装界面,并出现“按任意键继续”,然后单击Enter-“ vista version:[6,3],如果是64位win7,则输入数字6,如果是32位(即是,通常的X86版本)输入数字3,并且***将显示Windows Dream...
训练Yolov5的博客很多了,只要放好数据集位置即可本博客使用的yolov5-5.0版本最近确实事情较多,博客写的比较简练,如果有问题,直接评论即可,我会短时间内回复!主要就是下图的文件放置创建flir.yaml文件,这个是yolov5中voc.yaml文件,我直接复制一下修改后:(建议在ubuntu系统中训练)修改train.py参数训练过程中如果出现关于channel错误信息的,直接点进去,修改通道数为1即可。训练结果..._1671465600
clone():克隆对象的时候自动调用。测试代码如下:class Wo{public $username='king';public function say(){echo 'hello '.$this->username.'<br/>';}}$w1=new Wo; //创建一个新的对象echo $w1->username.'<br/&g...
下载、安装(Windows 电脑 64位)链接: https://pan.baidu.com/s/1c2VujTm 密码: ai98 电脑端使用:步骤一:将其设置成系统的代理服务器。选择菜单中的 “Proxy” -> “Windows Proxy” 步骤二: Chrome 和 Firefox 需要设置成使用系统的代理服务器,或者直接将代理服务器设置成127.0.0.
本文内容基于 k8s部署prometheus + grafana。process-exporter介绍:在 prometheus 中,process-exporter 可以用来检测所选进程的存活状态。用法:process-exporter [options] -config.path filename.yml如果选择监控的进程并将其分组,可以提供命令行参数或使用 yaml 配置文件。推荐通过 -config.path 指定配置文件。-config.path yaml 文件的常规格式是顶级
网上的资料都是旧版的 , 遇到了一些坑 首先 定义一个canvas , 如果要设置大小的话得在外面放一个div来控制大小 , 设置宽度会自动设置对应的高度 , 自己设置height无效(此处不知道怎么解决)&lt;div style="width: 1600px"&gt; &lt;canvas id="myChart"&gt;&lt;/canvas&gt;&lt;/div&gt;添加引用...
configure: error: xml2-config not found. Please check your libxml2 installation.sudo apt-get install libxml2-dev error: Cannot find OpenSSL's 1) Configure: error: xml2-config not foun
第一节 简介:SpringMVC是Spring框架的一个模块,Spring和SpringMVC无需通过中间整合层进行整合。SpringMVC是基于MVC的WEB框架。MVC设计模式在B/S下的应用:对上图说明①:浏览器发送请求到控制器(这里要知道控制器的作用)②:控制器不能处理请求必须交给模型层来处理接着去访问数据库③:模型层将处理好的结果返回给控制层④:控
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 76226 Accepted Submission(s): 12101Problem DescriptionGive you two numbers A and B,