我在我的阵列中在哪里

Where am I in my array?

本文关键字:在哪里 阵列 我的      更新时间:2023-10-16

这是自动生成的C代码,所以请不要介意我通过字符指针滚动的方法

我正在使用字符指针来存储字符串:

char str[] = "Hello!";
char *ptr = str;

我使用指针算法来滚动它:

++ptr;
++ptr;
...
...
--ptr;

我想知道在某个时候它到底指向什么索引(例如,"Hello"中的"e"为 1)。我该怎么做?

适当地,std::distance(str, ptr)或只是ptr - str

您可以简单地使用 printf 打印相应的值或使用 %c 打印 cout 即可获取指向的字符。

printf("%c",*p);

如果你想知道这个位置,那么

printf("%tdn",ptr-str);

只是做

   printf("ndistance[%d]",ptr-str); 

要回答您的问题,最简单的方法是使用 std::d istance。这将返回给定迭代器之间的元素数。在你的例子中,std::d istance(str, ptr) 返回 str 和 ptr 之间的元素数。假设 str 指向 start,ptr 位于"o"处,则此 API 返回的值为 4。