QString、std::string、char* 之间的转换

1、QString、std::string转化成char*

#include <iostream>
#include <QtCore/QString>

int main()
{
    QString str_Q("cupcupy北京");
    int j = str_Q.length(); //11,一个汉字算两个字符
    std::string str_string = str_Q.toStdString();
    int i = str_string.length();//11,字符串长度不包括结尾的'/0'
    //c_str()返回的是一个临时指针,即str_p指向的内存地址属于str_string
    //一旦str_string被析构,str_p就成了一个悬浮指针
    //正确使用时要使用new + strcpy
    const char* str_p = str_string.c_str();
    char* ch = new char( i + 1 ); //字符串结尾是'/0'
    //strcpy认为ch指向的空间足够大,strcpy_s检查ch指向的空间是否足够
    strcpy_s( ch, i + 1, str_p);
    std::cout<<ch<<std::endl;
    return 0;
}

2、char*转换成std::string

char* temp = "cupbeijing";
std::string str = temp;//此处的等号进行了拷贝
//如下可知
std::string fileName_str;
if(true)
{
    char* fileName = "pwave.sgy";
    fileName_str = fileName;
}

 

posted @ 2014-09-09 21:45  想什么想  阅读(442)  评论(0编辑  收藏  举报