1中的substr().到最后一个字符C++

substr() from the 1. to the last character C++

本文关键字:最后一个 字符 C++ 中的 substr      更新时间:2023-10-16

我想使用substr()函数从1中获取字符链。到最后,没有0。我应该这样做吗:string str = xyz.substr(1, xyz.length());还是CCD_ 2?为什么?

您不需要指定要包含的字符数。正如我在评论中所说:

string str = xyz.substr(1)

这将返回所有字符,直到字符串

结束

子字符串的签名是

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

由于新字符串的长度比旧字符串短1,因此您应该如下调用它:

string str = xyz.substr(1, xyz.length() - 1);

实际上,您可以省略第二个参数,因为它默认为字符串:npos。"字符串::npos的值表示字符串结束之前的所有字符。"(请参阅http://www.cplusplus.com/reference/string/string/substr/)。

这两个声明

std::string str = xyz.substr( 1, xyz.length() ); 

std::string str = xyz.substr( 1, xyz.length() - 1 );

如果CCD_ 3的大小不等于0。

然而,这份声明

std::string str = xyz.substr( 1 );

更具表现力。

如果字符串xyz可以是空字符串,那么您应该编写类似的内容

std::string str = xyz.substr( !xyz.empty() ? 1 : 0 );

std::string str = xyz.substr( xyz.size() != 0 ? 1 : 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;
}