C++ std :: string.substr() 和 java String.substring()

63 阅读1分钟

背景

  • 今天刷力扣 最长回文子串,用的C++,发现std :: string.substr() 函数,和java的String 返回的结果不一样,于是乎就把C++的string常用的函数都撸了一遍;

函数原型

C++

string substr(size_t pos = 0, size_t len = npos) const;

java

public String substring(int beginIndex, int endIndex) {
    // 删除check部分
   int subLen = endIndex - beginIndex;
   if (subLen < 0) {
       throw new StringIndexOutOfBoundsException(subLen);
   }
   return ((beginIndex == 0) && (endIndex == value.length)) ? this
           : new String(value, beginIndex, subLen);
}

测试代码

std::string UseString::my_substr(std::string str, size_t pos, size_t len) {
   return str.substr(pos, len);
}
private static void test_substring() {
    String s = "qwertyuiop";
    String newStr = s.substring(2, 7);
    System.err.println("newStr : "+newStr);
}

测试 结果

  • 字符串: s = "qwertyuiop"
  • 测试 切割的起始位置:(2,7)
  • 测试结果
    • C++ : ertyuio : 从原字符串s 2的位置(包含2的位置),往后数7个字符,组合成新的字符串

    • java : ertyu : 从原字符串s 2的位置(包含2的位置)到 原字符串s 7的位置的位置,(不包含7的位置),这中间组合成新的字符串;