C++的string怎么取单个字符
时间: 2024-01-10 11:03:42 浏览: 115
可以使用string类提供的下标运算符[]来取单个字符,例如:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "hello world";
cout << str[0] << endl; // 输出'h'
cout << str[6] << endl; // 输出'w'
return 0;
}
```
注意,下标从0开始,如果访问的下标超出了字符串的范围,会引发未定义的行为。所以在使用下标运算符时,要确保下标的合法性。
相关问题
c++string删除指定字符
在 C++ 中,可以使用字符串操作函数和算法来删除指定字符。以下是一种常见的方法:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
int main() {
std::string str = "Hello World";
char ch = 'o';
str.erase(std::remove(str.begin(), str.end(), ch), str.end());
std::cout << str << std::endl;
return 0;
}
```
在上面的示例中,我们使用了 `erase` 函数和 `remove` 算法来删除指定字符。首先,我们定义了一个字符串 `str` 和一个字符 `ch`,然后使用 `remove` 函数将要删除的字符移动到字符串的末尾,然后使用 `erase` 函数将末尾的字符删除。最后,我们输出修改后的字符串。
请注意,这种方法只能删除单个字符,并且它会修改原始字符串。如果需要删除多个字符或者不想修改原始字符串,可以使用其他方法,如创建一个新的字符串来保存删除后的结果。
C++【String类】String头插单个字符,头删单个字符的函数实现
下面是头插单个字符的函数实现:
```c++
void String::insert(char ch) {
char *newStr = new char[length + 2];
newStr[0] = ch;
for (int i = 0; i < length; i++) {
newStr[i+1] = str[i];
}
newStr[length+1] = '\0';
delete[] str;
str = newStr;
length++;
}
```
下面是头删单个字符的函数实现:
```c++
void String::remove() {
if (length == 0) {
return;
}
char *newStr = new char[length];
for (int i = 1; i < length; i++) {
newStr[i-1] = str[i];
}
newStr[length-1] = '\0';
delete[] str;
str = newStr;
length--;
}
```
这里假设 `str` 是一个指向字符串的指针,`length` 是字符串的长度。头插单个字符就是在原来字符串的前面插入一个字符,需要新建一个长度为 `length+2` 的字符数组,将要插入的字符放到第一个位置,然后将原来的字符串复制到新的数组中。最后记得释放原来的字符串,并将指针指向新的字符串。
头删单个字符就是删除第一个字符,需要新建一个长度为 `length` 的字符数组,将原来字符串中第二个字符开始的子串复制到新的数组中。最后记得释放原来的字符串,并将指针指向新的字符串。需要注意的是,如果字符串本来就是空串,则不进行任何操作。
阅读全文