如何更改字符串指针指向的字符
How can I change the character a string pointer points to?
理论上很简单:
如果我有一个字符串animal="Boar"
;
如何将动物指向'O'
?
我试过这个:
int main(int argc, char** argv) {
string *spoint = new string;
string word = "Hello";
spoint = &word;
spoint++;
cout << (*spoint);
return 0;
}
但它不起作用。
我希望cout << word;
首先打印"Word"
,如果这是单词指向的字符串,那么运行一个操作,所以cout << word;
将打印"ord"
。
一定有一个简单的方法?
我认为您缺少一些基本的指针算术。让我们来看下面的代码片段:
int* spoint;
spoint++;
如果spoint
指向地址为1000
的int
,则在上述操作之后,spoint
将指向当前位置旁边的位置sizeof(int)
字节,因为下一个int
将在1000 + sizeof(int)
可用。此操作将指针移动到下一个存储器位置1004
(如果int
的大小为4
字节),而不影响存储器位置的实际值。
字符串也是如此。
string word[] = {"Hello","world"};
string* spoint = word;
spoint++;
在spoint++
之后,spoint
将指向"world"
,而不是指向"Hello"
的字符e
,这就是为什么您没有正确的输出。如果你想访问字符串中的字符,你应该使用其他人提到的char*
。
首先,您必须将word
转换为C字符串(一个以null结尾的字符序列),同时将其分配给char*
,然后您可以递增它来访问这些字符。
string word = "word";
const char *spoint = word.c_str();
spoint++;
cout <<spoint<<endl;
现在,spoint
在递增后将指向"word"
的'o'
,如果您将使用cout
打印它,则输出将为"ord"
。
我觉得您混淆了char *
和C++string
对象。
通过使用两者,你可以实现与你所要求的类似的东西——尽管我不确定这是否是你真正想要的
int main(int argc, char** argv) {
string word = "Hello";
const char* spoint = word.c_str()
spoint++;
cout << (*spoint);
return 0;
}
相关文章:
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 将(N 个字节)无符号字符指针转换为浮点数和双 C++
- 字符指针的 Qt 数组
- C++将常量字符* 指针数组传递给对象
- 为什么不能将字符指针定义为数组?
- 在函数内初始化无符号字符指针将返回空指针
- 将字符指针存储到容器中
- 为什么 strtok_r() 只接受字符数组而不接受字符指针
- 字符指针数组内存分配
- 字符指针不递增?
- 如何在C++中使用字符指针
- 确保字符指针始终指向相同的字符串文字
- C++中的字符指针
- 使用unique_ptr的常量字符指针
- 字符指针不断意外更改
- 将字符指针中的十六进制转换为十进制
- 如何将字符*(字符指针)转换为 PCSZ?
- 在向量中存储字符指针
- 字符指针具有不同的值