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*);   

  • 相关阅读:
    2017博普杯 东北大学邀请赛(B. Drink too much water)(贪心+树链剖分)
    AGC018D Tree and Hamilton Path(树+树的重心)
    BZOJ2843:极地旅行社
    P++ 1.0.5
    BZOJ1052:[HAOI2007]覆盖问题
    BZOJ3098:Hash Killer II
    BZOJ2784:[JLOI2012]时间流逝
    BZOJ2282:[SDOI2011]消防
    BZOJ1875:[SDOI2009]HH去散步
    Codeforces 504 A (Round #285 div.1 A) Misha and Forest
  • 原文地址:https://www.cnblogs.com/silentNight/p/5400846.html
Copyright © 2011-2022 走看看