用迭代器构建一个字符串

用户名

给定一个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

这两个构造函数都有一个迭代器作为第二个参数。

在此示例中,我试图构建一个包含第一个子字符串的字符串,该子字符串在第一个空格出现的地方结束。

Angew不再为SO感到骄傲

std::string::find()返回一个偏移量,而不是一个迭代器(是的,这很大程度上是标准库的设计不一致)。因此,要使用此功能(并包括适当的错误检查),请执行以下操作:

size_t offset = s.find(" ");
std::string(s.begin(), (offset == std::string::npos ? s.end() : s.begin() + offset);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章