求教C++中将字符串转换为数组的方法解决方法

如题所述

C++的string类提供了3个将其内容转换为字符数组的函数data()、c_str()和copy()。前两个返回的数组都是const性质的,不能改写其内容,copy()可将其内容直接拷贝到char型数组中,但没有结束符。我觉得最好的办法就是自己写段代码拷贝,因为string是支持像操作字符数组一样操作的。下面提供两宗代码供参考:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include <string>
#include <iostream>
using namespace std;
int main(int argc,char *argv[]){
string s="1234567890";
int i;
char p[100];
for(i=0;i<s.length();p[i++]=s[i]);//自写代码拷贝,本人推荐这个,简单明了
p[i]='\0';//string的字符串不以'\0'结尾,轮换后加上'\0'
cout << p << endl;
return 0;
}//#include "stdafx.h"//If the vc++6.0, with this line.
#include <string>
#include <iostream>
using namespace std;
int main(int argc,char *argv[]){
    string s="1234567890";
    int ln;
    char p[100];
    s.copy(p,ln=s.length());//调用string的成员函数copy
    p[ln]='\0';//copy不自动添加结束'\0',要手工添加
    cout << p << endl;
    return 0;
}

以上代码的执行举例:

由于string的对象可能像操作char型数组一样操作,所以除非万不得已不提倡转换。供参考。

温馨提示:答案为网友推荐,仅供参考