多年来,我一直使用stringname[0]
获取string
的第一个字符,甚至没有考虑过它。但是,我最近想知道是否对阵列进行粗暴访问确实是一种很好的做法。这似乎是一个微不足道的问题,但并不是因为它看起来与STL容器的内存/访问管理密切相关。
我可以想到stringname.at(0)
(不是很有说服力)但是迭代器可能有更好的选择。最重要的是,如果字符串为空,理想的方法不会导致错误。
任何广泛接受的良好做法?
答案 0 :(得分:9)
如果s
为空字符串,则s[0]
会返回'\0'
,而s.at(0)
会返回std::out_of_range
。
行为的差异远远大于绩效差异。