Удалить из строки все однобуквенные слова - C++

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string str;
    unsigned int k=0, pos=0;
    cout <<"Enter string:";
    getline(cin,str);
    while (k<str.length())
    {
if (isalpha(str[k]   ) 
        str.erase(k,1);
        else k++;

    }
cout<<"string="<<str<<endl;
    return 0;
}

не могу никак понять что вбить в if что бы программа работала

Тут немножко сложнее будет:

#include <iostream>
#include <string>
using namespace std;
int main() {
    string str;
    int k = 0, len;
    cout << "Enter string:";
    getline(cin, str);

    bool into_word = false;
    for (k = static_cast<int>(str.length() - 1); k >= 0 ; --k) {
        if (isalpha(str[k]) && !into_word) {
            into_word = true;
            len = 1;
            continue;
        }
        if (!isalpha(str[k]) && into_word) {
            into_word = false;
            if (len == 1) {
                str.erase(k + 1, 1);
            }
            continue;
        }
        if (into_word)
            len++;
    }
    if (into_word && len == 1)
        str.erase(0, 1);

    cout << "string = '" << str << "'" << endl;
    return 0;
}

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.