访问字符串元素地址
Accessing strings element addresses
#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::string
和 char*
是独特的类型,不可互换。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"
}
相关文章:
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 为什么两个矢量元素的地址有这么大的差距?
- 如何在 c++ stl 中获取列表中被推回的元素的地址,在常量时间内?
- 循环中的变量被设置为下一个数组的元素始终具有相同的内存地址?
- 指向结构的指针向量的元素具有相同的地址
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 类实例的地址是否等于类中唯一元素的地址
- 存储 std::list 元素的地址;内存
- 为什么这段代码给出错误......'a'是指针到字符指针,应该存储's'的地址,因为s是指向数组的第一个元素的指针
- 直接从指针/地址访问数组的元素
- 获取向量中元素的地址
- 如何在 2D 字符数组中打印 [x][y] 元素的地址?(C++)
- 按地址从矢量中删除元素
- 指针指向数组中的下一个元素,但地址是相同的.如何
- 为什么'std::string'中第一个元素的地址打印为整个字符串?
- 将结构元素地址设置为C 中的null(单链接列表)
- 将特定数组元素的地址传递到函数
- 访问字符串元素地址
- 第一个字符串元素的地址产生意外结果
- 在向量 (C++) 中保留插入元素的地址