意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

C++ string.substr索引越界怎么办

来源:佚名 编辑:佚名
2024-07-09 13:57:42

当使用string.substr对字符串进行子串提取时,如果索引越界会导致程序运行时出现未定义行为。为了避免这种情况,可以在提取子串之前先判断索引是否在有效范围内,可以使用std::min函数来确保索引不会超出字符串的长度。

以下是一个示例代码:

#include <iostream>
#include <string>
#include <algorithm> // for std::min

int main() {
    std::string str = "Hello, World!";
    int start = 6; // starting index
    int length = 10; // number of characters to extract

    // Check if start index is within string length
    if(start >= 0 && start < str.length()) {
        // Calculate number of characters to extract without going out of bounds
        length = std::min(length, static_cast<int>(str.length() - start));

        std::string subStr = str.substr(start, length);
        std::cout << "SubString: " << subStr << std::endl;
    } else {
        std::cout << "Invalid start index" << std::endl;
    }

    return 0;
}

在上面的示例中,我们首先检查起始索引是否在字符串长度范围内,然后使用std::min函数计算要提取的字符数,确保不会超出字符串长度。这样可以避免string.substr索引越界的问题。


C++ string.substr索引越界怎么办

本网站发布或转载的文章均来自网络,其原创性以及文中表达的观点和判断不代表本网站。
上一篇: 何时该使用C++ protect关键字 下一篇: C++ string.substr是否支持UTF-8