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

Posted

技术标签:

【中文标题】如何使用 ++ 运算符访问字符串字符数组中的下一个字符串?【英文标题】:How to access the next string with the ++ operator in a character array of strings? 【发布时间】:2018-01-20 11:11:48 【问题描述】:
    // 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

【问题讨论】:

您所说的是否要访问它们,例如:std::cout&lt;&lt; *strings_array; std::cout&lt;&lt;*(strings_array++);?我不知道这是否有效,只是要求澄清你想要什么。 您希望它如何工作? int i = 0; ++i; std::cout &lt;&lt; strings_array[i];? @apalomer " 我不知道这是否可行" 不,这行不通你不能增加数组类型。 看起来对初学者很有用。 您确实意识到所有这些都是不必要的,因为std::vector&lt;std::string&gt; 将指针派对变成了无聊的单线? 【参考方案1】:

strings_array 声明于:

char* strings_array[100];

是一个不可修改的左值,所以它不能成为++操作符的操作数,因为它确实修改了它的操作数。

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

char **ptr = &strings_array[0];

这个ptr是一个可修改的左值,所以它可以成为++的操作数。

【讨论】:

好吧,我不想修改任何东西,我只想将指针移动到下一个字符串。 ++ 是不可能的吗? @Aquarius_Girl ++ 必须修改指针,使其指向下一个元素。【参考方案2】:

当我们在 char 数组数据类型中自动存储多个字符时,它是二维的。char* 是指向 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                                                                                                                                         

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

【讨论】:

以上是关于如何使用 ++ 运算符访问字符串字符数组中的下一个字符串?的主要内容,如果未能解决你的问题,请参考以下文章

我如何使用scanf读取文本文件中的下一行

三元运算符如何比较 JavaScript 中的字符和数字?

PHP 一个字符串,如何提取其中相同的字符?

如何使用列表和字典将字符串转换为二进制代码

如何将字符串数组转换为 int 数组以访问 int 数组中的数据?

如何在 kotlin Android 中访问更大的 jsonArray json 中的 json 数组中的字符串