我想使用substr()函数来获取从1到最后的字符链,而不是0。
我应该这样做:
string str = xyz.substr(1, xyz.length());
还是(xyz.length() - 1)
?为什么?
答案 0 :(得分:6)
答案 1 :(得分:5)
substr的签名是
string substr (size_t pos = 0, size_t len = npos) const;
由于新字符串的长度比旧字符串小1,您应该按如下方式调用它:
string str = xyz.substr(1, xyz.length() - 1);
您实际上可以省略第二个参数,因为它默认为string :: npos。 “string :: npos的值表示直到字符串结尾的所有字符。” (见http://www.cplusplus.com/reference/string/string/substr/)。
答案 2 :(得分:4)
两个声明
nil
和
std::string str = xyz.substr( 1, xyz.length() );
如果std::string str = xyz.substr( 1, xyz.length() - 1 );
的大小不等于0,则是有效的(尽管第一个可能会使代码的读者感到困惑)。
然而这个宣言
str
更具表现力。
如果字符串std::string str = xyz.substr( 1 );
可以是空字符串,那么您应该编写类似
xyz
或
std::string str = xyz.substr( !xyz.empty() ? 1 : 0 );
答案 3 :(得分:0)
如果要查找从某个索引开始到字符串结尾的字符串子字符串,可以执行以下操作。
char * substring(char *s){
return s;
}
int main(){
char s[1][n]; // suppose we just take a single string.
char *sub;
scanf("%s",s[1]); //s[1]="ababaaa"
sub=substring(s[1]+1); //sub="babaaa"(starting from 1st index).
sub=substring(s[1]+3); //sub="baaa" (starting from 3rd index).
return 0;
}