c++string 中取char
时间: 2023-09-04 19:06:23 浏览: 205
在C++中,可以通过以下几种方式从std::string中获取char:
1. 使用下标运算符[]:可以使用下标运算符[]来获取字符串中的单个字符。例如:
```cpp
std::string str = "Hello";
char ch = str[0]; // 获取第一个字符'H'
```
2. 使用成员函数at():std::string类还提供了一个成员函数at(),它与下标运算符类似,用于获取指定位置的字符。例如:
```cpp
std::string str = "Hello";
char ch = str.at(1); // 获取第二个字符'e'
```
需要注意的是,使用at()函数访问超出字符串长度的索引会引发std::out_of_range异常,因此在使用之前需要进行边界检查。
3. 将字符串转换为字符数组:如果需要将整个字符串转换为字符数组,可以使用c_str()函数获取一个以null结尾的C风格字符串,然后将其赋给一个字符数组。例如:
```cpp
std::string str = "Hello";const char* charArray = str.c_str(); // 获取以null结尾的C风格字符串
`
相关问题
c++中string转换为char
将C++中的`std::string`类型转换为C语言中的`char`类型数组可以通过以下两种方式实现:
1. 使用`c_str()`函数
`c_str()`函数可以返回一个指向`string`对象中存储的C风格字符串的指针,因此可以通过将其赋值给`char`类型数组来实现转换。
示例代码如下:
```c++
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, world!";
char char_arr[str.size() + 1];
strcpy(char_arr, str.c_str());
std::cout << char_arr << std::endl;
return 0;
}
```
2. 使用`copy()`函数
`copy()`函数可以将`string`对象中的字符复制到指定的字符数组中,因此也可以通过使用`copy()`函数来实现转换。
示例代码如下:
```c++
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, world!";
char char_arr[str.size() + 1];
str.copy(char_arr, str.size() + 1);
char_arr[str.size()] = '\0';
std::cout << char_arr << std::endl;
return 0;
}
```
需要注意的是,在使用`copy()`函数时,需要在字符数组的最后一个位置添加空字符(`\0`),以确保字符数组以空字符结尾,否则可能会出现不可预期的结果。
c++中 string转char*
可以使用string的成员函数.c_str()来获取一个指向以空字符结尾的字符数组的指针,即char*类型的指针。
例如:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "hello world";
char* charPtr = const_cast<char*>(str.c_str());
cout << charPtr << endl;
return 0;
}
```
这里使用了const_cast来去除c_str返回值的const属性,因为char*类型的指针不具有const属性。