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
 

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

Имя*

E-mail:*

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