【c++】c_str()的用法详解

c_str():生成一个const char*指针,指向以空字符终止的数组。

#include<iostream>
#include<string>
#include<cstring>//需要包含cstring的字符串
using namespace  std;

int main()
{
    const char *strC;
    string strS = "1234";
    strC = strS.c_str();
    cout << strC << endl;
    strS = "abcde";
    cout << strC << endl;

    cin.get();
    return 0;
}

效果:

【c++】c_str()的用法详解

 

 

上面如果继续用strC指针的话,导致的错误将是不可想象的。就如:1234变为abcd

其实上面的c = s.c_str(); 不是一个好习惯。既然strc指针指向的内容容易失效,我们就应该按照上面的方法,那怎么把数据复制出来呢?

#include<iostream>
#include<string>
#include<cstring>//需要包含cstring的字符串
using namespace  std;

int main()
{
    string strS = "1234";
    int iLen = strS.size() + 1;//size不包含最后的空字符,所以要+1
    char *strC = new char[iLen];
    strcpy_s(strC, iLen,strS.c_str());
    cout << strC << endl;
    strS = "abcde";
    cout << strC << endl;
    delete[]strC;//删除自定义数组

    cin.get();
    return 0;
}

效果:

【c++】c_str()的用法详解

 

上一篇:7,8,9,11,14


下一篇:474.一和零(01背包)