如何从string类型的变量 返回一个char* 类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从string类型的变量 返回一个char* 类型相关的知识,希望对你有一定的参考价值。
如题目
参考技术A 可以使用string类的成员函数c_str()这个函数的原型是:const char *c_str()const;
该函数可以返回一个指针,指向调用函数的string对象中的以空字符结尾的字符串。不过,在程序中,你不能修改这个以空字符结尾的字符串
char *str_cast;
string str("this is a test");
str_cast=str.c_str(); 参考技术B char *p = (char*)&string;
经实验,自定义数据类型的地址往往就是它里面第一个变量的地址。一般用类自定义数据型时是也往往把最重要的首变量作为它的元数据。
如CString 等都可以这么去理解。 参考技术C string类带有一个转换为C类型字符串的函数c_str();
如:
string str("abc");
char *pstr = str.c_str();本回答被提问者采纳 参考技术D string 是字符串,
不是一种数据类型。
一般用char* or char[] 进行定义的
C++中如何把char*转换成string*?
前面用char *S =new char[temp_len]; 得到了一个指向char数组的指针S,如何把这个S转换成string*类型?(后面要用到string*类型的参数)
这个比较简单,如下参考步骤。
#include"stdio.h"
#include<stdlib.h>
#include<string.h>
voidmain()
intn=123456789;
charstr[20];
itoa(n,str,10);
printf("%s\\n",str);
扩展资料:
int转string的方式
1、采用标准库中的to_string函数。
inti=12;
cout<<std::to_string(i)<<endl;
您不需要包含本实用程序中应该包含的任何头文件,但是您不需要包含它们,直接使用它们,并定义任何其他内置的字符串到字符串重载函数,这很方便。
2、采用sstream中定义的字符串流对象来实现。
ostringstreamos;//构造一个输出字符串流,流内容为空;
inti=12;
os<<i;//向输出字符串流中输出int整数i的内容;
cout<<os.str()<<endl;//利用字符串流的str函数获取流中的内容;
字符串流对象的str函数对于istringstream和ostringstream都适用,都可以获取流中的内容。
参考技术A本来,如果代码中用了string,就没必要再使用char*处理字符串。
如果非要做这样的转换,可以这样:
char *S =new char[temp_len];std::string s1(S); //这里调用string的一个带参数的构造函数,相当于将*S做
//一个拷贝
std::string *PStr=&s1; //不能将*string直接指向char*
如果要将string转换为char*,可以使用string提供的函数c_str() ,或是函数data(),data除了返回字符串内容外,不附加结束符'\\0',而c_str()返回一个以‘\\0’结尾的字符数组.
欢迎追问
直接定义 std::string S;
如果坚持要用指针,那么定义:
std::string temp;
std::string* s = &temp;
如果坚持要用 new,那么定义:
std::string* s = new std::string;追问
您说的对。不过这里是在原有系统上做小升级,牵一发动全身,所以如果能转换的话就不对原有代码做改动了。
追答那就只能创建一个 string 的对象,内容是 S 的一个 copy,创建后的 string 对象,与 S 没有关联。
如果想要把 string 的内容,再同步到 S,只能自己copy 了。
以上是关于如何从string类型的变量 返回一个char* 类型的主要内容,如果未能解决你的问题,请参考以下文章
类型转换 String——》Char OR Char ——》String