string insert



Автор Арсен Арутюнян задал вопрос в разделе Другие языки и технологии

C++ string insert и получил лучший ответ

Ответ от Капитан Гугл[гуру]
Потому что строка бесконечно удлинняется, добавляя в каждой итерации точку.
И вообще
const char X[] = "AOYEUI";
...
if(strchr(X,toupper(st[ i]))...//правда, проще? Арсен Арутюнян
Гуру
(4600)
1) удаляет все гласные буквы,
2) перед каждой согласной буквой ставит символ ".",

Ответ от Дима[мастер]
У тебя программа зацикливается вот здесь:
for(int i = 0; i < st.length(); i++)
Из-за этого:
else st.insert(i, ".");
Сделай break для вывода из цикла во вложенном цикле, как вариант, но я сомневаюсь что она будет работать, т. к. не понимаю окончательной задачи

Ответ от Николай Веселуха[гуру]
Так нагляднее?
#include <iostream>
#include <string>
using namespace std;
bool is_vowel(wchar_t);
bool is_consonant(wchar_t);
bool logic(wstring, wchar_t);
int main() {
    wcout.imbue(locale(".866"));
    wcin.imbue(locale(".866"));
    wstring text(L"Мама мыла раму, Алла читала книгу! ");
    wcout << text << endl;
    size_t size = text.size();
    rsize_t letter = 0;
    while (letter < size) {
        if (is_vowel(text.at(letter)) {
            text.erase(letter, 1);
            --size;
        } else if (is_consonant(text.at(letter)) {
            text.insert(letter, L".");
            ++size;
            letter += 2;
        } else ++letter;
    }
    wcout << text << endl;
    cin.get(); cin.get();
    return 0;
}
bool is_consonant(wchar_t _letter) {
    wstring src(L"БбВвГгДдЖжЗзЙйКкЛлМмНнПпРрСсТтФфХхЦцЧчШшЩщЪъЬь");
    return logic(src, _letter);
}
bool is_vowel(wchar_t _letter) {
    wstring src(L"АаЕеЁёИиОоУуЫыЭэЮюЯя");
    return logic(src, _letter);
}
bool logic(wstring _src, wchar_t _letter) {
    bool vowel = false;
    const size_t size = _src.size();
    for (rsize_t letter = 0; letter < size; letter++)
        if (_letter == _src.at(letter)) {
            vowel = true;
            break;
        }
    return vowel;
}

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: C++ string insert

помогите доработать программу
#include <iostream>
#include <string>
using namespace std;

int
подробнее...
спросили в System V
Форматированный вывод числа C#
Любую строку можно сформировать.

using System;
namespace example {
подробнее...
спросили в POS
Как в паскаль заменить подстроку в строке на другую подстроку
Доброго времени суток.

Для того, чтобы заменить Васю на Петю нужно три строчки программы
подробнее...
спросили в Echo Night
Excel макросы
создай кнопку на странице и привяжи вот этот макрос:
Private Sub CommandButton1_Click()
Dim
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:

Строковые переменные (Паскаль).Подскажите пожалуйста
var i:integer; Str:string;
begin
Writeln('Введите текст'); Readln(Str); i:=0; подробнее...
спросили в Visual music
Эксель Можно ли строку или текст сделать мигающим?
Мерцающий текст в Excel можно получить лишь с помощью небольшой макрокоманды.

Допустим,
подробнее...

C++,построение множества
Просмотреть последовательность символов, и если какой-то символ является знаком препинания, то
подробнее...
спросили в Выводить
C++, вывод char в file.
Вывод в файл:

#include <fstream>
#include <iostream>
#include
подробнее...

Вопрос по Delphi. Не так легко ка может показаться!!
var
time1,time2:string;
begin
{ TODO -oUser -cConsole Main : Insert code here }подробнее...
спросили в Otokar
Некоторые функции эксель
точно не знаю возможно ли такое, но для эксперимента можно попробовать так:
пропечатать
подробнее...
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*