如何在字符串字符数组中使用++运算符访问下一个字符串?

时间:2018-01-20 11:11:48

标签: c++ arrays string pointers

    // This is an array which contains char pointers.
    // These char pointers will be pointing to strings.
    char* strings_array[100];

    strings_array[0] = (char*)"anisha";
    strings_array[1] = (char*)"kaul";
    strings_array[2] = (char*)"shizuka";
    strings_array[3] = (char*)"sharma";

    // Access the whole 1st string.
    std::cout << *strings_array;

    // Access the whole 2nd string.
    std::cout << strings_array[1];

以上就是我尝试过并且有效。 我想知道如何使用++运算符来获取第二个字符串。

将++作为strings_array的前置或后置修复,会产生lvalue required error

2 个答案:

答案 0 :(得分:3)

strings_array声明如下:

char* strings_array[100];

不可修改的左值,因此它不能成为++运算符的操作数,因为它确实修改了它的操作数。

但是,您可以将ptr定义为指向数组strings_array的第一个元素的指针:

char **ptr = &strings_array[0];

ptr可修改的左值,因此它可以成为++的操作数。

答案 1 :(得分:1)

当我们在char数组数据类型中自动存储多个字符时,它是double dimension.char *是指向char数据类型的指针。** **是指向指针char的指针。我们已经声明了char * strings_array所以必须使用char **来存储char指针变量的地址。我们可以通过在char **变量中使用++运算符来递增地址,逐个访问字符串元素。

在我们的示例中,cpr是char **变量,最初存储char * strings_array的起始地址,cpr ++递增地址,因为cpr是char **,它存储char *的地址

#include <iostream>
using namespace std;
int main()
 {
   char* strings_array[100];
   strings_array[0] = (char*)"anisha";
   strings_array[1] = (char*)"kaul";
   strings_array[2] = (char*)"shizuka";
   strings_array[3] = (char*)"sharma";
   cout <<"\n"<< *strings_array;
   cout <<"\n"<< strings_array[1];
   char **cpr=&strings_array[0];
   cout<<"\n String Values using string pointer";
   cout<<"\n------------------------------------";
   for(int i=0;i<4;i++)
     {
       cout<<"\n"<<*(cpr);
       cpr++;
      }
   return 0;

}

输出

anisha                                                                                                                                         
kaul  

String Values using string pointer                                                                                                            
------------------------------------                                                                                                           
anisha                                                                                                                                         
kaul                                                                                                                                           
shizuka                                                                                                                                        
sharma                                                                                                                                         

希望你理解这个概念。谢谢你