访问字符串元素地址

Accessing strings element addresses

本文关键字:地址 元素 字符串 访问      更新时间:2023-10-16
#include<iostream>
using namespace std;
void reverse(char *m) {
}
int main() {
    string m="";
    reverse(m);
    return 0;
}

在我尝试通过字符指针访问字符串时,编译器给出以下错误

-  cannot convert 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' to 'char*' for argument '1' to 'void reversewords(char*)'

有人可以告诉我它背后的原因吗?另外,请让我知道我可以通过指针访问字符串的方式。

std::stringchar*是独特的类型,不可互换。std::string实施了一些隐式转换,可以将char*转换为std::string,但相反的不是正确的。

由于C 17,您可以使用std::string::data()获取对字符串数据的非const指针。由于C 11,您还可以安全地获取std::string中第一个字符的地址,并将其用作指向NULL终止字符串的指针。在C 11之前,似乎没有一种便携式方法来实现这一目标。

希望直接使用std::string与标准容器算法一起使用,而不是使用为C字符串设计的功能。反向std::string的通常方法是使用std::reverse

#include <algorithm>
#include <iostream>
#include <string>
int main()
{
    std::string str = "Hello, World!";
    std::reverse(str.begin(), str.end());
    std::cout << str << std::endl; // Prints "!dlroW ,olleH"
}