string涉及的一些转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

猜你喜欢

转载自blog.csdn.net/wk_bjut_edu_cn/article/details/84847329