版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wk_bjut_edu_cn/article/details/84847329
string、char *、char[]之间的互相转换
一、string转换为char *
标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n)。
1. c_str()
生成一个const char*指针,指向以空字符终止的数组。
这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中。
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
const char *p;
const char *q;
string s = "1234";
p = s.c_str();
q = s.data();
cout << p << endl; //输出:1234
cout << q << endl; //同上
s = "abcd";
cout << p << endl; //输出:abcd
cout << q << endl; //同上
system("pause");
return 0;
}
2.data()
data():与c_str()类似,但是返回的数组不以空字符终止。
3.copy()
copy(p,n,size_type _Off = 0):从string类型对象中至多复制n个字符到字符指针p指向的空间中。默认从首字符开始,但是也可以指定,开始的位置(记住从0开始)。返回真正从对象中复制的字符。用户要确保p指向的空间足够保存n个字符。
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
string s = "hello";
char r[10];
s.copy(r, 3, 0);
system("pause");
return 0;
}
二、char *转string
可以直接赋值。
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
char *c = "abcd";
string s = c;
cout << s << endl;
system("pause");
return 0;
}
三、string转char[]
这个由于我们知道string的长度,可以根据size()函数得到,又可以根据下标直接访问,所以用一个循环就可以赋值了。
四、char[]转string
可以直接赋值。
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
char c[] = {'a','b','c','\0'};
string s = c;
cout << s << endl;
system("pause");
return 0;
}
string与数值类型的转换
一、数值类型转string
std命令空间下有一个C++标准库函数std::to_string(),可用于将数值类型转换为string。使用时需要include头文件<string>
。
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
二、string转数值类型
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
string s = "123";
int num = stoi(s);
cout << num << endl;
string str = to_string(num);
cout << str << endl;
system("pause");
return 0;
}