簡體   English   中英

C ++:使用isdigit檢查字符串字符是否為數字。 。

[英]C++: Checking whether a string character is a digit using isdigit. .

我正在使用getline循環讀取程序的輸入。

    string temp(STR_SIZE, ' ');
    string str_num(STR_SIZE, ' ');
    ...
    getline(cin, temp, '\n');

之后,我使用一個函數來查找下一個定界符(空白),並將空白之前的所有字符分配給str_num。 看起來像這樣:

    str_num.assign(temp, 0, next_white_space(0));

我已經證明這很好。 解決方案的下一步是將str_num轉換為int(這部分也可以正常工作),但是我應該檢查以確保str_num中的每個字符都是一個數字。 這是我嘗試過的最好的方法:

    if(!isdigit(str_num[0] - '0')) {
        cout << "Error: Not an appropriate value\n";
        break; /* Leave control structure */
    }

由於某些原因,這總是打印錯誤消息並退出結構。 這是為什么? 之前,我已經將operator []用於字符串對象,並且它似乎運行良好。 但是,這完全把我搞砸了。

謝謝。

std::isdigit接受char的整數值並檢查它。

因此,刪除-'0',然后將str_num [index]傳遞給isdigit()。

注意:由於此函數來自C,因此將char作為整數處理char的舊樣式通過采用int的方法來顯示。 但是,char可以提升為int值,因此char變成一個int就可以了,這是可行的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM