C++从字符串中选择n个字符

C++从字符串中选择n个字符,c++,substring,substr,C++,Substring,Substr,我有一根绳子。设为字符串a=abcde 我只想选择几个字符,比如从1到3 在python中,我会像[1:3]那样做。 但是C++不允许我这么做。它只允许例如:a[n],而不允许[n:x] < C++ > 中有没有一种方法可以从字符串中选择n个字符? 还是我需要用抹掉 您可以使用: 请注意,索引从0开始 如果要缩短字符串本身,确实可以使用: 例如,如果要重新指定对象,可以编写 std::string a = "abcde"; a = a.substr( 0, 3 ); 但是,要选择字符,无需更

我有一根绳子。设为字符串a=abcde

我只想选择几个字符,比如从1到3

在python中,我会像[1:3]那样做。 但是C++不允许我这么做。它只允许例如:a[n],而不允许[n:x]

< C++ >

中有没有一种方法可以从字符串中选择n个字符? 还是我需要用抹掉

您可以使用:

请注意,索引从0开始

如果要缩短字符串本身,确实可以使用:


例如,如果要重新指定对象,可以编写

std::string a = "abcde";

a = a.substr( 0, 3 );

但是,要选择字符,无需更改对象本身。std::string类的大多数成员函数都接受两个参数:字符串中的初始位置和要处理的字符数。您还可以使用迭代器处理所选字符,例如a.begin,std::next a.begin,3。在许多标准算法中,可以使用迭代器指定字符串中的范围。

在字符串类中使用substr。您可以使用子字符串,也可以使用for循环将范围中的每个项附加到空字符串。@UP.iaprograms-str.erasestr.end;,这是什么意思@UP.iaprograms-好的,您可能是指str.erasestr.end;。str.end指向一个过去的str,所以不能使用它。请参阅-返回一个迭代器,该迭代器指向字符串结束字符的过去部分。“而且它也不会抹去任何东西。”丹尼·唐克斯说。现在,我做'str.end-1,它就像我想要的那样工作。@UP.iaprograms-是的,但你甚至不需要它。您只需使用str.erase3从pos 3开始擦除到末尾-请参阅我的答案。
a.erase(3); // removes all characters starting at position 3 (fourth character)
            // until the end of the string
std::string a = "abcde";

a = a.substr( 0, 3 );