С++ эквивалент Python String Slice?
В python мне удалось разрезать часть строки; другими словами, просто напечатайте символы после определенной позиции. Есть ли эквивалент этого в С++?
Код Python:
text= "Apple Pear Orange"
print text[6:]
Будет напечатан: Pear Orange
Ответы
Ответ 1
Да, это метод substr
:
basic_string substr( size_type pos = 0,
size_type count = npos ) const;
Возвращает подстроку [pos, pos + count). Если запрошенная подстрока продолжается до конца строки или если count == npos, возвращаемая подстрока - [pos, size()).
Пример
#include <iostream>
#include <string>
int main(void) {
std::string text("Apple Pear Orange");
std::cout << text.substr(6) << std::endl;
return 0;
}
Посмотрите, как он работает
Ответ 2
std::string text = "Apple Pear Orange";
std::cout << std::string(text.begin() + 6, text.end()) << std::endl; // No range checking at all.
std::cout << text.substr(6) << std::endl; // Throws an exception if string isn't long enough.
Обратите внимание, что в отличие от python первое не проверяет диапазон: ваша строка ввода должна быть достаточно длинной. В зависимости от вашего конечного использования для среза могут быть и другие альтернативы (например, использование диапазона итераторов непосредственно вместо того, чтобы делать копию, как я здесь).
Ответ 3
Похоже, что вы хотите string:: substr:
std::string text = "Apple Pear Orange";
std::cout << text.substr(6, std::string::npos) << std::endl; // "Pear Orange"
Здесь string:: npos является синонимом "до конца строки" (а также по умолчанию, но я включил его для ясности).
Ответ 4
В С++ ближайшим эквивалентом, вероятно, будет строка:: substr().
Пример:
std::string str = "Something";
printf("%s", str.substr(4)); // -> "thing"
printf("%s", str.substr(4,3)); // -> "thi"
(первым параметром является начальная позиция, вторая - отрезанная длина).
Второй параметр по умолчанию - конец строки (string:: npos).
Ответ 5
Вы можете сделать что-то вроде этого, используя класс string:
std::string text = "Apple Pear Orange";
size_t pos = text.find('Pear');