C++ std::string和#x27之间有区别吗;s front()和[0]?
在我的程序中,我需要检查C++ std::string和#x27之间有区别吗;s front()和[0]?,c++,string,C++,String,在我的程序中,我需要检查std::string的第一个字符,并使用如下内容: if(string.front()=='-') 我想知道,使用下面的代码会有什么不同吗 if(字符串[0]='-') 同时front()和操作符[]返回对元素的引用,所以没有区别 如果需要边界检查,可以使用std::string::at,它执行边界检查并抛出std::out\u of_range异常。这两个front()和操作符[]都返回对元素的引用,因此没有区别 如果需要边界检查,可以使用std::string::
std::string
的第一个字符,并使用如下内容:
if(string.front()=='-')
我想知道,使用下面的代码会有什么不同吗
if(字符串[0]='-')
同时front()
和操作符[]
返回对元素的引用,所以没有区别
如果需要边界检查,可以使用std::string::at
,它执行边界检查并抛出std::out\u of_range
异常。这两个front()
和操作符[]
都返回对元素的引用,因此没有区别
如果需要边界检查,可以使用std::string::at
,它执行边界检查并抛出std::out_of_range
异常。来自forstring::front
:
效果:相当于:返回运算符[](0)代码>
因此,您显示的两段代码之间没有区别。来自forstring::front
:
效果:相当于:返回运算符[](0)代码>
因此,您所显示的两段代码之间没有区别。perfront
返回对第一个字符的引用,相当于运算符[](0)。哦,我完全忽略了这一点!感谢您指出这一点。perfront
返回对第一个字符的引用,相当于运算符[](0)。哦,我完全错过了!谢谢你指出这一点。那么你要说的是front()
和operator[](0)
之间的区别是,如果字符串为空,两者都是UB….?对于op的问题,实际上没有区别,因为front
和operator[]
都返回对元素的引用,我想告诉op,如果他需要边界检查,他必须使用std::string::at
,也许我的答案不清楚,下次,我会尽量让我的答案更清楚。谢谢@DevSolar
,但问题不是关于边界检查,也没有迹象表明OP需要它@DevSolar编辑了我的答案,以在最后回答op的问题和我的建议。因此,您的意思是front()
和operator[](0)
之间的区别是,如果字符串为空,两者都是UB…?对于op的问题,实际上没有区别,因为front
和operator[]
返回对元素的引用,我想告诉op,如果他需要边界检查,他必须使用std::string::at
,也许我的答案不清楚,下次,我会尝试更清楚地回答。谢谢@DevSolar
,但问题不是关于边界检查,也没有迹象表明OP需要它@DevSolar编辑了我的答案,最后回答了op的问题和我的建议。