@MrDlop
I love C++

Как заменить одинарный обратный слеш?

Как заменить одинарный обратный слеш (\) на \\ или / в строке (std::string)
  • Вопрос задан
  • 645 просмотров
Пригласить эксперта
Ответы на вопрос 3
samodum
@samodum
Какой вопрос - такой и ответ
@Mercury13
Программист на «си с крестами» и не только
Не сильно оптимизированный, но действующий код.
CONST_STR = string_view или const string& в зависимости от версии Си.
На выходе — кол-во замен.
size_t str::replace(
        std::string& aString,
        const char aWhat,
        const char aByWhat)
{
    size_t r = 0;
    FOR_S(i, 0, aString.length())
        if (aString[i] == aWhat) {
            aString[i] = aByWhat;
            ++r;
        }
    return r;
}

size_t str::replace(
        std::string &aString,
        char aWhat,
        CONST_STR aByWhat)
{
    if (aByWhat.length()==1)
    {   // Simple replace
        return str::replace(aString, aWhat, aByWhat[0]);
    }
    // More complex replace
    static const size_t szWhat = 1;
    const size_t szByWhat = aByWhat.length();
    size_t p = 0, r = 0;
    while ((p = aString.find(aWhat, p)) != std::string::npos)
    {
        aString.replace(p, szWhat, aByWhat);
        p += szByWhat;
        ++r;
    }
    return r;
}
Ответ написан
Комментировать
LoliDeveloper
@LoliDeveloper
Линейная алгебра как смысл жизни
меняет (\) на (/)
for(int i = 0; i < strlen(str); ++i){
    if(str[i] == '\\'){
        str[i] = '/';
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы