我有一个字符串。设为string a = "abcde";
。
我想只选择几个字符(让我说从1到3)。
在python中我会像a[1:3]
那样做。
但C ++并不允许我这样做。它仅允许例如:a[n]
,而不是[n:x]。
有没有办法从C ++中的字符串中选择n
个字符?
或者我需要使用erase()
吗?
答案 0 :(得分:8)
您可以使用substr()
:
std::string a = "abcde";
std::string b = a.substr(0, 3);
请注意,索引从0
开始。
如果您想缩短字符串本身,您确实可以使用erase()
:
a.erase(3); // removes all characters starting at position 3 (fourth character)
// until the end of the string
答案 1 :(得分:5)
如果要重新分配对象,可以编写例如
std::string a = "abcde";
a = a.substr( 0, 3 );
但是,要选择字符,则无需更改对象本身。类std::string
的大多数成员函数接受两个参数:字符串中的初始位置和要处理的字符数。您还可以使用迭代器来处理选定的字符,例如a.begin()
,std::next( a.begin(), 3 )
。您可以使用在许多标准算法中指定字符串范围的迭代器。