如何从具有开始和结束索引的给定字符串中复制子字符串,或者给出字符串的开始索引和长度。
原文由 boom 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何从具有开始和结束索引的给定字符串中复制子字符串,或者给出字符串的开始索引和长度。
原文由 boom 发布,翻译遵循 CC BY-SA 4.0 许可协议
也许这不是一个理想的选择,而且有点不像 C++ 的风格,但至少它工作得很好。我的版本 SubString
接受 std::string
将在字符串下搜索起始索引和结束索引。子字符串将在 start
和 end
索引之间返回。
std::string SubString(const std::string& string, int beginIndex, int endIndex) {
int size = (int)string.size();
if (beginIndex < 0 || beginIndex > size - 1)
return "-1"; // Index out of bounds
if (endIndex < 0 || endIndex > size - 1)
return "-1"; // Index out of bounds
if (beginIndex > endIndex)
return "-1"; // Begin index should not be bigger that end.
std::string substr;
for (int i = 0; i < size; i++)
if (i >= beginIndex && i <= endIndex)
substr += (char)string[i];
return substr;
}
原文由 Kenny 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答1.3k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
4 回答863 阅读
1 回答934 阅读
1 回答968 阅读
1 回答733 阅读
1 回答836 阅读
从
std::string
,std::string::substr
将创建一个新的std::string
从现有的给定起始索引和长度。在给定结束索引的情况下确定必要的长度应该是微不足道的。 (如果结束索引是包含而不是独占,则应格外小心以确保它是字符串的有效索引。)如果您尝试从 C 样式字符串(以 NUL 结尾的
char
数组)创建子字符串,则可以使用std::string(const char* s, size_t n)
构造函数。例如:与
std::string::substr
不同,std::string(const char* s, size_t n)
构造函数可以读取输入字符串的末尾,因此在这种情况下,您还应该首先验证结束索引是否有效。