这是我所拥有的:

char* input = new char [input_max]
char* inputPtr = iput;

我想使用inputPtr遍历输入数组。但是我不确定什么可以正确检查我是否已经到达字符串的末尾:
while (*inputPtr++)
{
    // Some code
}

或者
while (*inputPtr != '\0')
{
    inputPtr++;
    // Some code
}

还是更优雅的选择?

最佳答案

假设输入字符串以空值结尾:

for(char *inputPtr = input; *inputPtr; ++inputPtr)
{
  // some code
}

请记住,您发布的示例可能无法提供所需的结果。在while循环条件下,您总是在执行后递增。在循环中时,您已经传递了第一个字符。举个例子:
#include <iostream>
using namespace std;

int main()
{
  const char *str = "apple\0";
  const char *it = str;
  while(*it++)
  {
    cout << *it << '_';
  }
}

输出:



请注意,缺少第一个字符,并在末尾加上了额外的_下划线。如果您对预增和后增运算符感到困惑,请查看this related question

09-08 00:25