Как вставит строку внутрь другой строки при нахождении определенного символа

336
26 ноября 2016, 18:58

Есть символ С и строки S1, S2. Перед каждым входжением символа С в строку S1 нужно вставить строку S2. Как это сделать?

Answer 1

Вот демонстрационная программа, которая показывает, как это можно сделать.

#include <iostream>
#include <string>
int main() 
{
    std::string s( "one two three" );
    std::string t( "," );
    char c = ' ';
    std::cout << s << std::endl;
    for ( std::string::size_type pos = 0; 
          ( pos = s.find( c, pos ) ) != std::string::npos;
          pos += t.size() + sizeof( c ) )
    {
        s.insert( pos, t );
    }
    std::cout << s << std::endl;
    return 0;
}

Вывод программы на консоль

one two three
one, two, three

Можно предварительно подсчитать, сколько в строке встречается символ в c, чтобы заранее зарезервировать память в строке s, а затем выполнить указанный в программе цикл.

Например

#include <iostream>
#include <string>
#include <algorithm>
int main() 
{
    std::string s( "one two three" );
    std::string t( "," );
    char c = ' ';
    std::cout << s << std::endl;
    auto n = std::count( s.begin(), s.end(), c );
    s.reserve( s.size() + n * t.size() );
    for ( std::string::size_type pos = 0; 
          ( pos = s.find( c, pos ) ) != std::string::npos;
          pos += t.size() + sizeof( c ) )
    {
        s.insert( pos, t );
    }
    std::cout << s << std::endl;
    return 0;
}
READ ALSO
Как написать парсер кода на C/C++, C# [закрыто]

Как написать парсер кода на C/C++, C# [закрыто]

Необходимо написать парсер кода для подсчёта метрики ЧепинаНепонятен алгоритм написания парсера

247
Ошибка error LNK2005 [закрыто]

Ошибка error LNK2005 [закрыто]

Написал программу которая берет данные с сайта и выводит их в DataGridView, все работает когда одна формаНо когда я добавил вторую форму, чтобы...

275
из ASCII в UTF-8 C++

из ASCII в UTF-8 C++

ЗдравствуйтеРаботаю с архивами: создание, добавление элементов и т

470
MS Visual Studio 2015 BEX nvd3d9wrap.dll

MS Visual Studio 2015 BEX nvd3d9wrap.dll

Возникает следующая ошибка при выполнении некоторых проектов в VS 2013/2015

300