使用ctype.h(C+;+;)进行错误处理 我发现了C++中的库的用法,即 ctype.h

使用ctype.h(C+;+;)进行错误处理 我发现了C++中的库的用法,即 ctype.h,c++,ctype,C++,Ctype,我有一个用户输入,它是一个接受单词的字符串,正在使用ispunt()进行错误处理,以不接受标点符号。但是我想ispunt()接受“.”。我是否可以将参数设置为跳过“'”?如果我正确理解了您的问题,您希望ispunt在字符上返回false。如果是这种情况,您只需为其编写一个自定义包装器即可 int myispunct(int c) { return c == '\'' ? 0 : ispunct(c); } 首先检查c是否为”。如果是,它返回0,否则它将c传递到ispunct并从中返回。

我有一个用户输入,它是一个接受单词的字符串,正在使用
ispunt()
进行错误处理,以不接受标点符号。但是我想
ispunt()
接受“.”。我是否可以将参数设置为跳过“'”?

如果我正确理解了您的问题,您希望
ispunt
字符上返回false。如果是这种情况,您只需为其编写一个自定义包装器即可

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

首先检查
c
是否为
。如果是,它返回0,否则它将
c
传递到
ispunct
并从中返回。

如果我正确理解了您的问题,您希望
ispunct
字符返回false。如果是这种情况,您只需为其编写一个自定义包装器即可

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

首先检查
c
是否为
。如果是,它返回0,否则它将
c
传递到
ispunt
并从中返回。

不,没有,因为
\''
是标点符号,这就是
ispunt()
寻找的。您可以手动检查字符。

不,没有,因为
'\'
是标点符号,这就是
ispunct()
要查找的。您可以手动检查字符

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


其中
word
是您的字符串。

好吧,那将是大量的工作。谢谢你指出这一点。我现在试着用你的方法和我的方法来比较。好吧,那将是大量的工作。谢谢你指出这一点。我现在试着用你的方法和我的方法来比较。