Форум программистов, компьютерный форум CyberForum.ru

Вставка в строки - C++

Восстановить пароль Регистрация
 
Mister_Trololo
0 / 0 / 0
Регистрация: 23.10.2011
Сообщений: 3
21.11.2011, 18:43     Вставка в строки #1
Здравствуйте, у меня такой вопрос.

Как правильно вставлять символы(к примеру 4 пробела) в объекты типа string, если к примеру задана строка "aaaaaa\nbbbbbb\ncccc". Если пользоваться итератороми, то он потеряет смысл после первой вставки в строку, то есть следующий код не валиден. Вопрос, как сделать это правильно? спасибо

C++
1
2
3
4
5
6
7
8
9
string str = "0F AB 5D C6 DF E7";
 
for(string::iterator iter = str.begin(); iter != str.end(); ++iter)
{
    if(*iter == '\n')
    {
        str.insert(++iter, 4, ' ');
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
21.11.2011, 22:04     Вставка в строки #2
Mister_Trololo, посмотрите сюда
Строки в С++
вам не нужно никаких итераторов. Впрочем ниже код, чтобы было понятней
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string str = "0F AB 5D C6 DF E7";
    cout<<"Input string : "<<str<<endl;
    for(int i = 3,j; i < str.length(); i += (3 + j) )
    for(j = 0; j < 4; j++)
        str.insert(i,1,' ');
    cout<<"Splitiing : "<<str<<endl;
    system("pause");
    return 0;
}
Input string : 0F AB 5D C6 DF E7
Splitiing : 0F AB 5D C6 DF E7
Для продолжения нажмите любую клавишу . . .
Mister_Trololo
0 / 0 / 0
Регистрация: 23.10.2011
Сообщений: 3
21.11.2011, 22:30  [ТС]     Вставка в строки #3
ну это да, но интересно именно поведение при использовании итераторов и алгоритмов
-=ЮрА=-
Заблокирован
Автор FAQ
21.11.2011, 23:48     Вставка в строки #4
Цитата Сообщение от Mister_Trololo Посмотреть сообщение
ну это да, но интересно именно поведение при использовании итераторов и алгоритмов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    int j;
    string str = "0F AB 5D C6 DF";
    cout<<"Input string : "<<str<<endl;
    for(string::iterator iter = str.begin() + 3; iter <= str.end(); iter += 7)
        str.insert(iter,4,' ');
    cout<<"Splitiing : "<<str<<endl;
    system("pause");
    return 0;
}
Input string : 0F AB 5D C6 DF
Splitiing : 0F AB 5D C6 DF
Для продолжения нажмите любую клавишу . . .
Yandex
Объявления
21.11.2011, 23:48     Вставка в строки
Ответ Создать тему
Опции темы

Текущее время: 04:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru