c ++ Как извлечь пробел между словами, если он есть

У меня два вопроса. Мне нужно написать программу, которая извлекает все не алфавитные символы и отображает их, а затем удаляет их.

Я использую isalpha, которая работает для символов, но только если во входной строке нет пробелов типа «hello world»

но если это более одного слова, например «здравствуй! мир!», оно извлечет только первый восклицательный знак, но не второй.

Второй вопрос, который может быть связан, я хочу, чтобы моя программа обнаружила пробелы между словами (я пробовал isspace, но я, должно быть, использовал это неправильно?

так например
если вход hello4 world! Как ты сегодня?
Я хочу это сказать мне

удалено: 4
удалены:
удалены:
удалены:
удалено: 3
удалены:
удалены:
удалены:

Короче говоря, если нет другого пути, я бы хотел определить пробелы как! isalpha или найти что-то похожее на isalpha для пробела между текстом.

Спасибо

# include <iostream>
# include <string>

using namespace std;

void main()
{
string message;cin >> message;

for (int i = 0; message[i]; i++)

if(!isalpha(message[i]))cout << "deleted following character: " << message[i] <<endl;
else
cout <<"All is good! \n";}

-2

Решение

>> читает одно слово, останавливаясь при обнаружении пробела. Чтобы прочитать всю строку, вы хотите

std::getline(cout, message);
0

Другие решения

Есть лучший способ, с помощью которого вы можете получить не алфавитные символы,

Вы можете проверить значение asci для каждого символа и сравнить с буквенным символом asci, если его нет в нем. & не пробел (space asci val),
тогда вы получите свой не алфавитный характер.
Вы можете получить все коды ASCII здесь: => http://www.asciitable.com/

-Jayesh

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector