如何使用 ++ 运算符访问字符串字符数组中的下一个字符串?
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<< *strings_array; std::cout<<*(strings_array++);
?我不知道这是否有效,只是要求澄清你想要什么。
您希望它如何工作? int i = 0; ++i; std::cout << strings_array[i];
?
@apalomer " 我不知道这是否可行" 不,这行不通你不能增加数组类型。
看起来对初学者很有用。
您确实意识到所有这些都是不必要的,因为std::vector<std::string>
将指针派对变成了无聊的单线?
【参考方案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
希望你理解这个概念。谢谢
【讨论】:
以上是关于如何使用 ++ 运算符访问字符串字符数组中的下一个字符串?的主要内容,如果未能解决你的问题,请参考以下文章