这是自动生成的C代码,所以请不要介意我通过char指针滚动的方法
我正在使用char指针来存储字符串:
char str[] = "Hello!";
char *ptr = str;
我使用指针算法滚动它:
++ptr;
++ptr;
...
...
--ptr;
我想在某个时候确切知道它指向的是什么索引(例如,“Hello”中的“e”为1)。我该怎么做?
答案 0 :(得分:11)
足够std::distance(str, ptr)
或ptr - str
。
答案 1 :(得分:2)
您可以使用printf或cout和%c打印相应的值,以获得指向的字符。
printf("%c",*p);
如果你想知道这个位置,那么
printf("%td\n",ptr-str);
答案 2 :(得分:0)
只做
printf("\ndistance[%d]",ptr-str);
答案 3 :(得分:0)
要回答你的问题,最简单的方法是使用std :: distance。这将返回给定迭代器之间的元素数。在您的情况下,std :: distance(str,ptr)返回str和ptr之间的元素数。假设str指向start并且ptr位于' o',则此API返回的值为4.