string与char* 互相转换以及周边问题

时间:2022-08-28 10:29:23

先插一个小知识点

string str = "abc"

str += 'd';

cout<<str<<endl;  //"abcd"   所以: string+char是被允许的.

string 转char* 的时候  string.c_str() 和string.data()的区别

c_str()返回的以'\0'结尾

data()返回的不以'\0'结尾

copy(p,n,size_type_off = 0);  从string类型对象中最多复制n个字符到字符指针p指向的空间中,默认从首字符开始,但是也可以指定开始复制的位置

string的c_str()返回的指针是由string管理的,他的生命周期是string的生命期 例如下面的例子是错误的:

char* p;

{

string a = "123";

p = a.c_str();

}

cout<<p<<endl;   //错误,因为指针无效了

另外这个指针始终指向的是string的内容, 如果想让指针的东西不变的话,只能先strcpy()复制到自己的内存中

 string s = "";

 const char* a = s.c_str();
char* b = strdup(a);
cout<<a; // s = "abc"; cout<<a; //abc cout<<b; //abc

char* 转string

char* p = "abc";

string s = string(p);

string 和CString的区别

cstring是ATL/MFC共享的 (ATL, Active Template Library 活动模板库, 是一种微软程序块,支持利用c++编写ASP代码以及其它ActiveX程序)

string 是c++标准库的

string 转CString

CString a;

a.format("%s", string.c_str());

char* 转CString

CString a;

a.format("%s", char*);

char* 转int

#include<stdlib.h>

int atoi(char*);    long atol(char*);

string与char* 互相转换以及周边问题的更多相关文章

  1. 关于&equals;&equals;和equals&lpar;&rpar;方法&amp&semi;Java中string与char如何转换&amp&semi;String,StringBuffer

    1.对于基本数据类型,可以直接使用==和!=进行内容比较 如:int x=30;        int y=30;         x==y;  //true 基本数据类型 简单类型(基本类型) bo ...

  2. string、char &ast;的转换

    string转char* 主要有三种方法可以将str转换为char*类型,分别是:data(); c_str(); copy(); data()方法 string str = "hello& ...

  3. PChar&comma;PAnsiChar&comma;String&comma;AnsiString&comma;Char数组,AnsiChar数组转换

    PChar,PAnsiChar,String,AnsiString,Char数组,AnsiChar数组之间的转换关系见下图 通过转换链,可以实现任意两个类型之间的互转.如PChar转PAnsiChar ...

  4. string 与char&ast; char&lbrack;&rsqb;之间的转换 2015-04-09 11&colon;30 29人阅读 评论&lpar;0&rpar; 收藏

    1.首先必须了解,string可以被看成是以字符为元素的一种容器.字符构成序列(字符串).有时候在字符序列中进行遍历,标准的string类提供了STL容器接口.具有一些成员函数比如begin().en ...

  5. string 与char&ast; char&lbrack;&rsqb;之间的转换

    1.首先必须了解,string可以被看成是以字符为元素的一种容器.字符构成序列(字符串).有时候在字符序列中进行遍历,标准的string类提供了STL容器接口.具有一些成员函数比如begin().en ...

  6. CString与string、char&ast;的区别和转换

    转自:http://blog.csdn.net/luoweifu/article/details/20232379 我们在C++的开发中经常会碰到string.char*以及CString,这三种都表 ...

  7. 【转】CString与string、char&ast;的区别和转换

    我们在C++的开发中经常会碰到string.char*以及CString,这三种都表示字符串类型,有很多相似又不同的地方,常常让人混淆.下面详细介绍这三者的区别.联系和转换: 各自的区别 char*: ...

  8. 实战c&plus;&plus;中的string系列--string与char&ast;、const char &ast;的转换&lpar;data&lpar;&rpar; or c&lowbar;str&lpar;&rpar;&rpar;

    在project中,我们也有非常多时候用到string与char*之间的转换,这里有个一我们之前提到的函数 c_str(),看看这个原型: const char *c_str(); c_str()函数 ...

  9. wchar&lowbar;t char string wstring 之间的转换

    wchar_t char string wstring 之间的转换 转:http://blog.csdn.net/lbd2008/article/details/8333583 在处理中文时有时需要进 ...

随机推荐

  1. UEFI Bootable USB Flash Drive - Create in Windows&lpar;WIN7 WIN8&rpar;

    How to Create a Bootable UEFI USB Flash Drive for Installing Windows 7, Windows 8, or Windows 8.1 In ...

  2. Linux命令行小插曲

    当命令行出错活出现<时,可使用 ctrl+c强制退出

  3. MySQL 百万级分页优化

    MySQL 百万级分页优化 http://www.jb51.net/article/31868.htm 一般刚开始学SQL的时候,会这样写 : , ; 但在数据达到百万级的时候,这样写会慢死 : , ...

  4. Xcode常用快捷键总结

    Xcode常用快捷键 Xcode窗口快捷键 其他补充: 编译代码: command + B 将代码翻译为计算机能够识别的语言(0/1) 调试Xcode中程序: command + R 折叠与展开方法代 ...

  5. SQLServer 2008 删除、压缩日志

    SQL Server 2008删除或压缩数据库日志的方法 由于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间.由于 ...

  6. Android PNG渐变背景图片失真问题 getWindow&lpar;&rpar;&period;setFormat&lpar;PixelFormat&period;RGBA&lowbar;8888&rpar;&semi;

    最近一个困扰很久的问题,渐变效果的png图片,设置为控件图片或background时,在eclipse上看着没有什么问题,但是在设备上运行时,可以看到明显的一圈圈的轮廓线,图片严重失真.在网上goog ...

  7. 分享两个提高效率的AndroidStudio小技巧

    这次分享两个 Android Studio 的小技巧,能够有效提高效率和减少犯错,尤其是在团队协作开发中. Getter 模板修改--自动处理 null 判断 格式化代码自动整理方法位置--广度 or ...

  8. c博客作业--分支、顺序结构

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 对于本章学习我感觉对代码有了初步的了解,一些简单的题目可以熟练掌握,但现在解决一道题目花的时间过多,不易发现那 ...

  9. 定时器&amp&semi;改变定时器的执行频率

    static System.Threading.Timer timer; static void Main(string[] args) { Console.WriteLine("Press ...

  10. 自定义Attribute类

    在我们的项目中有时经常会标识一些类的特性,在下面我们将简短的方式来介绍如何构建自定义的Attribute类. using System; using System.Collections.Generi ...