给定一个s
类型的字符串,std::string
我建立另一个s2
像这样的字符串
std::string(s.begin(), s.begin() + s.find(" "))
但是以下构造函数不起作用
std::string(s.begin(), s.find(" "))
有人知道为什么吗?我正在使用g++ 4.8.1 under Ubuntu amd64
这两个构造函数都有一个迭代器作为第二个参数。
在此示例中,我试图构建一个包含第一个子字符串的字符串,该子字符串在第一个空格出现的地方结束。
std::string::find()
返回一个偏移量,而不是一个迭代器(是的,这很大程度上是标准库的设计不一致)。因此,要使用此功能(并包括适当的错误检查),请执行以下操作:
size_t offset = s.find(" ");
std::string(s.begin(), (offset == std::string::npos ? s.end() : s.begin() + offset);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句