指针可以用来遍历字符数组吗?

Can a pointer be used to traverse an array of chars?

本文关键字:字符 数组 遍历 指针      更新时间:2023-10-16

我可以使用char* bufferpntr来遍历由char* buffer指向的数组吗?

的例子:

delete [] bufferpntr;
bufferpntr = nullptr;
buffer = nullptr;
buffer =  new char [MAX];
bufferpntr = buffer;
cout << "How many data entries:t";
cin.getline(buffer, MAX, 'n');

 while (*bufferpntr != '')
     cout << setw(2) << bufferpntr++;
但是,当我编译代码并运行它时,它在打印第一个索引后立即崩溃。

是的,你可以这样做。在c++中,指针是双向迭代器,可用于在有效缓冲区上迭代。还有一些更惯用的方法可以解决这个问题,这些方法消除了您自己管理字符串缓冲区内存的必要性。在您的情况下,您最好使用std::stringstd::getline。这样,无论输入行大小如何(当然,只要它适合可用内存),都可以读取输入行,而不必担心分配和释放资源。

下面的示例符合您的要求,从std::cin中读取一行并输出字符串的每个字符。

#include <utility>
#include <string>
#include <iostream>
#include <iomanip>
int main()
{
    std::string inputLine;
    std::getline(std::cin, inputLine);
    const char *ptr = inputLine.c_str();
    while(*ptr)
    {
        std::cout << std::setw(2) << *ptr++;
    }
}

我的猜测是:delete语句导致了崩溃,但它只是在之后才变得明显。试试不删除,并向我们展示一个完整的程序崩溃

我在我的项目中找到了它。我决定将输入作为一个字符数组,结果是