2013-08-25 49 views
2

我發現圖書館在C++是錯誤使用文件ctype.h處理(C++)

ctype.h 

我有一個用戶輸入的是一個字符串接受的話和做的錯誤使用ispunct()處理用法不接受標點符號。但我想ispunct()接受「'」。無論如何,我可以設置參數跳過「'」?

回答

3

如果我正確理解您的問題,您希望ispunct'字符上返回false。如果是這種情況,你可以寫一個自定義的包裝器。

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

它首先檢查是否c'。如果是,它返回0,否則它通過cispunct並從那返回。

+0

那麼,這將是很多工作。感謝您指出。我現在試着用你的方法和我的方法進行比較。 –

1

不,沒有,因爲'\''是標點符號,這就是ispunct()尋找的。您可以手動檢查字符。

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

其中word是你的字符串。