Задать вопрос
@JustMoose
Программист. Радиолюбитель. Прокрастинатор ;)

Почему у std::string нет человеческого replace?

Сабж.
Я в курсе, что там есть replace, который принимает охапку индексов, и код выглядит вот так:
std::string Text = "source";
std::string ToReplace = "so";
std::string ReplaceWith = "11";

Text.replace(Text.find(ToReplace),ToReplace.length(),ReplaceWith);


Но несколько странно, что в XXI веке для такой простой задачи надо так много писать.

Вопрос один: почему оно так?
Вроде уже и C++ 11/14/17 появились, а воз и ныне там :(
  • Вопрос задан
  • 6120 просмотров
Подписаться 2 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 3
Tesla4o
@Tesla4o
Без пользы жизнь - безвременная смерть... В. Гете
Есть такой репласе!

std::string str = "string test";
std::replace(str.begin(), str.end(), 's', 'd');
Ответ написан
Комментировать
@xxx3Vxxx
Программист C++
#include <regex>
#include <string>
#include <iostream>

using namespace std;

int main()
{
    string t = "asd asd asd";
    t = regex_replace(t, regex("asd"), "sdf");
    cout << t;

    return 0;
}


Это конечно из пушки по воробьям, но как вариант.
А почему нет кучи удобных методов...
Комитет по стандартизации достаточно консервативен. Стандартная библиотека всегда была достаточно минималистична.
Ответ написан
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
У STL много минусов, начиная тем, что нет простых и полезных функций и заканчивая очень нелогичным code-style, как вариант, можно использовать сторонние либы вроде poco
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы