c++ 如何string 赋值给char *
3个回答
展开全部
方法一:使用stringstream进行转换。
示例:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(int argc, char *argv[])
{
stringstream sstr;
sstr.clear();
char * ch = new char[1024];
string s="abcd";
sstr<<s;//将s的值放到stringstream
sstr>>ch;//将stringstream中的值导出到ch
cout<<ch<<endl;
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 <string>
#include <iostream>
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
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();
char* A = ss.c_str();
追问
提示const char * 不能转换为char* ,这方法试过了
追答
size_type copy(charT* buf, size_type n, size_type pos = 0) const //copy 把string的内容拷贝到buf空间中。
copy使用方法如下:
char * p = (char *)malloc(100*sizeof(char)); //必须为指针p分配内存空间用于存放从string里拷贝出来的数据。这个100可以改为pstr->length()+1
pstr->copy(p,pstr->length(),0); //如果没有上面分配内存空间,这个语句在运行时就会报段错误。
cout<<"char * p:copy from string is:"<<p<<endl; //正确的输出了字符串Hello world
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询