背景
- 今天刷力扣 最长回文子串,用的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的位置),这中间组合成新的字符串;
-