c++ 如何string 赋值给char *

string="sss";char*A来接受上面那个string这个如何做,求助了... string="sss";
char * A来接受上面那个string这个如何做,求助了
展开
 我来答
wchyumo2011
推荐于2018-02-28 · TA获得超过2万个赞
知道大有可为答主
回答量:5810
采纳率:79%
帮助的人:2809万
展开全部

方法一:使用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
*/
zhangsh1987
2012-05-30 · 超过35用户采纳过TA的回答
知道答主
回答量:158
采纳率:0%
帮助的人:101万
展开全部
string str="abc";
char *p=str.data();
实在不行就最笨的方法。。。
string str="hello";
char p[40];
str.copy(p,5,0); //5代表复制几个字符,0代表复制的位置
*(p+5)='\0'; //最后给个/0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
snoopylie
2012-05-30 · TA获得超过1275个赞
知道小有建树答主
回答量:2396
采纳率:33%
帮助的人:822万
展开全部
string ss = "ssss";
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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式