zoukankan      html  css  js  c++  java
  • string与char* 互相转换以及周边问题

    先插一个小知识点

    string str = "abc"

    str += 'd';

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

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

    c_str()返回的以''结尾

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

    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()复制到自己的内存中

    1 string s = "123";
    2 
    3 const char* a = s.c_str();
    4 char* b = strdup(a);
    5 cout<<a;   //123
    6 
    7 s = "abc";
    8 
    9 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*);   

  • 相关阅读:
    数据库事务的四大特性以及事务的隔离级别
    informer使用示例
    Linux内存、Swap、Cache、Buffer详细解析
    浏览器访问百度的整个过程
    安装zookeeper
    配置java环境
    promethues开发
    go mod常用操作说明
    redis使用基础
    channel的声明和使用
  • 原文地址:https://www.cnblogs.com/silentNight/p/5400846.html
Copyright © 2011-2022 走看看