C++ 如何定义字符串数组?

上周 我的那个朋友 关于C语言二维指针数组的问题
char ptr_array[3 ] ={{"asdx","qwer","fdsfaf"},{"4 4 4 4 4 ","5 5 5 ","6 6 6 6 "},{"a7 8 x","q3 er","f2 f"}};
ptr_array[0][0] 是“asdx”的首地址
ptr_array[2 ][2 ] 是“f2 f”的首地址
ptr_array[i][j] 我从0到2 j 从 0 到 2
示例 ptr_array[1 ][1 ] 这是“5 5 5 ”的第一个地址
由你决定

C++里如何实现用变量定义数组的长度

坦白说,这并不难,只是一个标准的字符串长度计算过程。
我们先来说说最重要的事情。
在自定义函数中,使用 while 循环来遍历字符数组。
每次使用i++直到遇到'\0'终止,这样i的值就是长度。
去年我们跑了这个项目,使用 while strlen(str) != 0 进行条件判断非常稳定。
不过后来我们发现strlen会重新传递,相当慢。
使用指针偏移代替速度更快,对于 3 000 级数据可节省约 2 0ms。
另外,在主函数中存储长度时,不要忘记sizeof和strlen之间的区别。
sizeof 计算 \0 痕迹,strlen 只计算有效字符。
很多人不重视这一点。
说实话,有点混乱。
还有一个更重要的细节。
输入字符串时,应该使用scanf("%s", str),但要注意缓冲区溢出。
最好添加一个长度限制,例如 scanf("%9 s", str),并为 \0' 保留一个字符。

一开始我以为只使用 for(i=0; str[i]; i++) 就足够了,但是后来我发现当字符串都是空格时,for循环就会卡住,因为空格也是字符。
等等,还有一件事,如果你使用的是C++,你可以直接使用std::string的内置length()方法,这样可以省去很多麻烦。

建议多运行几次,不要只看代码,要实际测试不同方法的性能差异。