获取不包含字符串中第一个字符的子字符串

时间:2014-04-13 20:49:15

标签: c++ string char

如果字符串为abcdef,我如何获得bcdef。我试过了

 cout << str.substr(1,'\0')<< endl;

但那并没有奏效。

char数组怎么样?

4 个答案:

答案 0 :(得分:2)

#include <iostream>
using namespace std;

int main() {

    std::string str = "abcdef";
    cout << str.substr (1);

    return 0;
}

直播:http://ideone.com/AueOXR

如果你看一下string :: substr:

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

Generate substring
Returns a newly constructed string object with its value initialized to a copy of a substring of this object.

The substring is the portion of the object that starts at character position pos and spans len characters (or until the end of the string, whichever comes first).

http://www.cplusplus.com/reference/string/string/substr/

这意味着:如果你没有指定第二个参数,则会假定一直到字符串结尾的默认参数。

答案 1 :(得分:2)

尝试

 cout << str.substr(1)<< endl;

当然,字符串的文档告诉你需要知道的一切......

答案 2 :(得分:1)

简化:)

std::cout << str.substr( 1 ) << std::endl;

另一种方式,我认为更有效的是使用成员函数c_str,如果字符串不包含嵌入的零

std::cout << str.c_str() + 1 << std::endl;

答案 3 :(得分:0)

substr(position, length)将返回在position索引处开始并在length之后以position个字符结尾的字符串。

您需要将\0更改为字符串索引的结尾或更改为空,因为如果您没有第二个参数,它将默认返回字符串的其余部分。

str.substr(1)将返回bcdef

str.substr(1, 5)也会返回bcdef