在 C++ 中轻松实现字符串与字符数组的相互转换
- 引言
 - 一、将字符串转换为 char 数组
 - 1.1、C++ 中的 c_str()和 strcpy()函数
 - 1.2、使用 for 循环中的字符串到字符数组的转换
 
- 二、将 char 数组转换为字符串
 - 2.1、C++ 运算符 '+'
 - 2.2、C++ 重载 '=' 运算符
 - 2.3、C++ 字符串内置构造函数
 
- 三、总结
 
引言
本文重点介绍在 C++ 中将字符串转换为 char 数组和将 char 数组转换为字符串的不同方法。
 
一、将字符串转换为 char 数组
C++ 提供了以下将字符串转换为 char 数组的技术:
- 使用 c_str()和 strcpy() 函数。
 - 使用 for 循环。
 
1.1、C++ 中的 c_str()和 strcpy()函数
C++ 函数c_str()以及 C++ 字符串函数strcpy()可用于轻松地将字符串转换为字符数组。
c_str()方法表示字符串数组中的字符序列,后跟一个空字符 '\0'。它返回指向字符串的 null 指针。
语法:
string-name.c_str();
 
- 首先使用 c_str() 方法来获取字符串的所有字符以及终止 null 字符。
 - 此外,声明一个 char 类型的空数组来存储结果,即将字符串转换为 char 数组的结果。
 - 最后,使用 
strcpy()方法将c_str()方法生成的字符序列复制到空 char 数组中。 
示例:
#include <bits/stdc++.h> 
using namespace std; 
int main() 
{ 
	 
	string str = "";
	cout<<"Enter the string:\n";
	
	cin>>str;
	char arr[str.length() + 1]; 
	strcpy(arr, str.c_str()); 
    cout<<"String to char array conversion:\n";
	for (int i = 0; i < str.length(); i++) 
		cout << arr[i]; 
	return 0; 
}
 
1.2、使用 for 循环中的字符串到字符数组的转换
为了将 char 数组转换为字符串,可以使用 C++ for 循环。
- 首先创建一个 char 类型的空数组。
 - 然后遍历输入字符串。
 - 在迭代时将字符存储到 char 数组中。
 
示例:
#include <bits/stdc++.h> 
using namespace std; 
int main() 
{ 
	 
	string str = "";
	cout<<"Enter the string:\n";
	
	cin>>str;
	char arr[str.length() + 1]; 
    cout<<"String to char array conversion:\n";
    for (int x = 0; x < sizeof(arr); x++) { 
        arr[x] = str[x]; 
        cout << arr[x]; 
    } 
	return 0; 
}
 
二、将 char 数组转换为字符串
用于在 C++ 中将 char 数组转换为字符串的技术:
- “+”运算符。
 - C++ 重载“=”运算符。
 - C++ 内置构造函数。
 
2.1、C++ 运算符 ‘+’
C++提供了将数据项连接或添加到变量的功能:'+' operator。
- 创建一个新的空字符串来存储结果。
 - 接下来,使用 for 循环遍历输入 char 数组。
 - 在遍历数组的过程中,使用 ‘+’ 运算符将字符连接到字符串。
 
示例:
#include <bits/stdc++.h> 
using namespace std; 
int main() 
{ 
	char arr[] = { 'L', 'I', 'O', 'N', 'L', 'O', 'N', 'G'}; 
	
	int size_arr = sizeof(arr) / sizeof(char); 
	string str = ""; 
	for (int x = 0; x < size_arr; x++) { 
		str = str + arr[x]; 
	} 
	cout<<"Converted char array to string:\n";
	cout << str << endl; 
	return 0; 
}
 
输出:
Converted char array to string:
LIONLONG
 
2.2、C++ 重载 ‘=’ 运算符
C++具有重载的概念,它使操作员执行基本或默认操作以外的其他操作。
- 创建一个新的空字符串。
 - 使用 
'=' operator overload将数据项逐个字符存储到新创建的空字符串中。 
示例:
#include <bits/stdc++.h> 
using namespace std; 
int main() 
{ 
	char arr[] = { 'L', 'I', 'O', 'N', 'L', 'O', 'N', 'G'}; 
	
	int size_arr = sizeof(arr) / sizeof(char); 
	string str = ""; 
	str = arr;
	cout<<"Converted char array to string:\n";
	cout << str << endl; 
	return 0; 
}
 
输出:
Converted char array to string:
LIONLONG
 
2.3、C++ 字符串内置构造函数
在将 char 数组转换为字符串的上下文中,可以使用 C++ 字符串构造函数。
语法:
string string-name(char array-name);
 
此构造函数采用以 null 字符结尾的字符序列作为输入参数。
注意:这只能在整个程序中声明字符串时使用。
示例:
#include <bits/stdc++.h> 
using namespace std; 
int main() 
{ 
	char arr[] = { 'L', 'I', 'O', 'N', 'L', 'O', 'N', 'G'}; 
	int size_arr = sizeof(arr) / sizeof(char); 
	string str(arr);
	cout<<"Converted char array to string:\n";
	cout <<str<< endl; 
	return 0; 
}
 
输出:
Converted char array to string:
LIONLONG
 
三、总结
在本文中了解了在 C++ 中将字符串转换为 char 数组的各种技术,反之亦然。
参考:C++ c_str()方法。




















