C++打印字符串数组中的元素(字符串)

C++遍历字符串数组,在main函数里定义一个字符串数组,要求依次输出字符串元素:

string a[4] = {"a", "vag", "gwe", "gewa"};

希望打印的结果
在这里插入图片描述
上面可以看做是二维指针,第一维是每个字符串,第二维是字符串里的字符。给出了五种写法,其中:

  • 其中写法1-写法3是两重循环访问到字符串的第二维(字符)
  • 写法4-写法5只有一重循环访问到字符串的第一维(字符串)

写法1:两层for循环+下标引用

for (int i = 0; i < 4; ++i)
  {
    for (int j = 0; a[i][j] != '\0'; ++j)
      cout << a[i][j];
    cout << " ";
  }

写法2:两层for循环+迭代器

for (int i = 0; i < 4; ++i)
  {
    for (auto beg = a[i].begin(); beg != a[i].end(); beg++)
    {
      cout << *beg;
    }
    cout << " ";
  }

写法3:两层for循环+标准库函数

for (auto p = begin(a); p != end(a); ++p)
  {
    for (auto q = begin(*p); q != end(*p); ++q)
    {
      cout << *q;
    }
    cout << " ";
  }

前面三种方法访问到了数组里的每一个字符,下面的写法直接输出字符串。

写法4:一层for循环+下标引用

for (int i = 0; i < 4; ++i)
  cout << a[i] << " ";

写法5:一层for循环+标准库函数

for (auto p = begin(a); p != end(a); ++p)
  cout << *p << " ";

不可用的写法

for (auto p = a->begin(); p != a->end(); ++p)
  cout << *p << " ";

最后只输出了a
在这里插入图片描述

注意:

  • a.begin()会有错误
  • a->begin()会有错误
  • a[1].begin()无错误

这里面有很多类似多维数组的元素遍历,可以参考我之前的文章《C++ primer》练习3.43-3.45: 打印二维数组的元素。

你可能感兴趣的:(C和C++,c++,字符串,遍历)