字符串数组的长度判断
2021-01-02 13:28
标签:用法 编译 怎么 archive include turn br0 面试官 字符串 在面试的时候突然遇到一个问题,面试官给出一个字符串数组,我该怎么去保存这个字符串数组呢,保存好以后又怎么把这个字符串数组利用起来, 我一开始想到的是用vector 但是,太年轻了,没这种用法。至少c++98中不行! (我看c++文档中对vector的介绍,出现了这样的赋值: 这中用法只在 c++ 17可以 ) 没升级之前,只能另想办法,那就使用数组吧 这样存储当然可以,在想得到str的长度时,我懵逼了,str.length()? 不行!没这用法。sizeof(str)?不行!这样得到的是str所占内存的大小。 那用str的内存大小除以每一项的内存大小总可以了吧,sizeof (str) / sizeof ( str[0] ) ,不行,每一项的长度不一样,这样算会不对劲,但是真的不行吗?我查资料,写代码验证。 运行截图 我一开始以为sizeof(string)会返回string所占内存的大小,会随着字符串长度的变化而变化,但实际上并没有,string再长,sizeof返回的也是一个固定的值(不同的环境结果可能会不同) 所以说通过这种方式是可以求得字符串数组的数组长度的。sizeof ( str ) / sizeof ( str [ 0 ] ). sizeof很特殊,不要把sizeof当成函数,也不要看作一元操作符,把他当成一个特殊的编译预处理。 关于sizeof,更多资料可以参考 https://www.cnblogs.com/wanghetao/archive/2012/04/04/2431760.html 字符串数组的长度判断 标签:用法 编译 怎么 archive include turn br0 面试官 字符串 原文地址:https://www.cnblogs.com/xujih/p/12994430.html vectorstring> vecstr={"i","work","at","byte","bytedance"};
std::vectorint> v = {7, 5, 16, 8}; //c++17可以
那样的话string类型的vector肯定也可以的,我把本地c++版本升级后,发现果然可以。
vectorstring> vecstr={"i","work","at","byte","bytedance"};
string str[]={"i","work","at","byte","bytedance"};
#include