c++之string&&char *&&char[]互转

    xiaoxiao2022-07-12  139

    string转char*的三种方法 //string str; //str.data();str.c_str();两种方法都可以将string转换成const char*,但如果需要进一步转换成char*,则需要使用下面的方法 strcpy_s(char destinaton,size_t,const charsource);

    void max(char *m) { cout << m << endl; }

    main函数内:

    string str1; char *p = new char[6]; char *q = new char[6]; //abcdefghjkl //p:abcdefghjkl //q:abcdefghjkl //ab //p:ab //q:abcdefghjkl while (getline(cin,str1)) { while(str1.length()>8) { //p = const_cast<char*>(str1.c_str());//1、使用c_str()返回临时指针 p = (char*)str1.substr(0,8).c_str();//cstr()函数返回一个指向正规c语言字符串的指针,内容与string串中相同 //但是由于c_str()返回的是一个临时指针,所以最后p指向的内容是垃圾,因为str1对象被析构,其内容被处理 //p = (char*)str1.data();//2、使用data()返回临时指针,想获取p的内容是做不到的 //3、使用strcpy_s //string s = "12345"; cout << "循环体里的p值:" << p << endl;//无 q = new char[strlen(str1.c_str())+1];// strcpy_s(q, strlen(str1.c_str()) + 1, str1.substr(0,8).c_str());//把s.ctr()指针里的内容拷贝一份到一个新的地址空间,让q指向它 str1 = str1.substr(8); } cout<<"p:"<<endl; max(p);//p是空的,因为c_str()函数作用域是在那一行 cout << "q" << endl; max(q); cout <<p <<" "<<q<< endl; }

    *char 转string 可以直接赋值

    char *m = "abcdef"; string ss(m); printf("%s", ss.c_str());

    char[]转string 可以直接赋值

    char pp[10]; string s = pp; printf("%s", ss.c_str());

    string转char[] 通过下标直接访问,用一个循环就可以赋值了

    int i; for (i = 0; i<ss.length(); i++) pp[i] = ss[i]; pp[i] = '\0';

    ps:const char转char

    constchar* cpc ="abc"; char* pc =newchar[100];//足够长 strcpy(pc,c);
    最新回复(0)