Обработка ошибок с использованием ctype.h (C ++)

Я обнаружил использование библиотеки в C ++, которая

ctype.h

У меня есть пользовательский ввод, который является строкой для принятия слов и выполняет обработку ошибок, используя ispunct() не принимать знаки препинания. Но я хочу ispunct() принять » ‘ «. Могу ли я установить параметр, чтобы пропустить «‘»?

2

Решение

Если я правильно понимаю ваш вопрос, вы хотите иметь ispunct вернуть ложь на ' персонаж. Вы можете просто написать пользовательскую оболочку, если это так.

int myispunct(int c) {
return c == '\'' ? 0 : ispunct(c);
}

Который сначала проверяет, если c это ', Если это так, он возвращает 0, в противном случае он проходит c в ispunct и возвращается из этого.

3

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

Нет, так как '\'' это пунктуация, и вот что ispunct() ищет. Вы можете проверить символы вручную.

1

try
{
if ( std::ispunct(word,loc) && word != "\'"  )
throw string("Punctuations other then \' are not allowed!");
}
catch(string ex)
{
//error handling
}

где word это ваша строка

0