如何更改字符串指针指向的字符?

时间:2016-04-04 14:39:54

标签: c++ string pointers

理论上这很简单:

如果我有一个字符串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"

必须有一个简单的方法吗?

2 个答案:

答案 0 :(得分:2)

我认为你缺少一些基本的指针算法。让我们采取以下代码片段:

 int* spoint;
 spoint++;

如果spoint指向地址为int的{​​{1}},则在执行上述操作后,1000将指向旁边的spoint字节位置当前位置,因为下一个sizeof(int)将在int处可用。此操作会将指针移动到下一个内存位置1000 + sizeof(int)(如果1004的大小为{{} 1}}字节)而不影响内存位置的实际值。

同样的情况是字符串。

int

4string word[] = {"Hello","world"}; string* spoint = word; spoint++; 指向spoint++而不是spoint的{​​{1}},这就是为什么你没有正确的输出。如果你想访问字符串中的字符,你应该使用其他人提到的"world"

首先,您必须将e转换为 C字符串(以空字符结尾的字符序列),同时将其分配给"Hello",然后您可以将其递增访问角色。

char*

现在word会在递增后指向char* string word = "word"; const char *spoint = word.c_str(); spoint++; cout <<spoint<<endl; ,如果您使用spoint打印,则输出将为'o'

答案 1 :(得分:1)

我觉得你将char *与C ++ string对象混淆了。

通过使用两者,你​​可以获得类似于你所要求的东西 - 尽管我不确定这是你真正想要的东西

int main(int argc, char** argv) {

    string word = "Hello";
    const char* spoint = word.c_str()
    spoint++;
    cout << (*spoint);

    return 0;
}