方法一:使用stringstream进行转换。
示例:
#include
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
stringstream sstr;
sstr.clear();
char * ch = new char[1024];
string s="abcd";
sstr<sstr>>ch;//将stringstream中的值导出到ch
cout<return 0;
}
/*
输出:abcd
*/
方法二:运用basic_string::c_str转换或者使用basic_string::data()转换
1)函数原型:const value_type *c_str( ) const;和const value_type *data( ) const;
2)函数描述:basic_string::c_str将一个字符串的内容转化为一个c风格字符串的指针,basic_string::data返回原始数据序列。
3)区别:data只是返回原始数据序列,没有保证会用traits::eos(),或者说'\0'来作字符串结束。 当然,可能多数实现都这样做了。
示例:
#include
#include
using namespace std;
int main( )
{
string str1 ( "Hello world" );
const char *ptr1 = 0;
ptr1= str1.data ( );
cout << "The modified string object ptr1 is: " << ptr1
<< endl;
// Converting a string to a C-style string
const char *c_str1 = str1.c_str ( );
cout << "The C-style string c_str1 is: " << c_str1
<< endl;
}
/*
输出:
The modified string object ptr1 is: Hello world
The C-style string c_str1 is: Hello world
*/
string str="abc";
char *p=str.data();
实在不行就最笨的方法。。。
string str="hello";
char p[40];
str.copy(p,5,0); //5代表复制几个字符,0代表复制的位置
*(p+5)='\0'; //最后给个/0
string ss = "ssss";
char* A = ss.c_str();