c++ 如何string 赋值给char *

string="sss";char * A来接受上面那个string这个如何做,求助了
2025-01-01 00:16:12
推荐回答(3个)
回答1:

方法一:使用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
*/

回答2:

string str="abc";
char *p=str.data();
实在不行就最笨的方法。。。
string str="hello";
char p[40];
str.copy(p,5,0); //5代表复制几个字符,0代表复制的位置
*(p+5)='\0'; //最后给个/0

回答3:

string ss = "ssss";
char* A = ss.c_str();