逐个字符读取以查看它是否是数字



我需要有关此if语句的帮助。我试图阅读每个字符以查看它是否是一个数字。如果它不是数字,那么如果它继续阅读下一个字符,则说它不是一个数字。例如,如果用户输入 54gr 21 gr42 134 3f3。唯一会 COUT 的是 21 和 134。

#include <iostream> // libraries
#include <iomanip>
#include <string>
using namespace std;
int main()
{
    char string[80];
    // char num[80];
    // char good[80];
    cout << "enter a string "; // prompting user 
    cin.getline(string,80); // geting line
    // int i = 0;
    // int j = 0;
    int count = 0;
    {
    while(string[count] != '') {
        if(string[count] >= '0' && string[count] <= '9' )
            cout << count << endl;
            }
           ++ count;
    }
    } 

我不会尝试逐个字符地执行此操作。问题是,在读取非空格字符字符串的末尾以验证所有内容是否都是数字的合法部分之前,您现在不知道5确实是数字的一部分。

因此,我认为您需要/想要将输入分解为"单词",然后检查每个完整的单词是否可以完全转换为数字。您只需阅读"单词"some_stream >> some_string;

一旦你有一个"单词",你就会检查你是否可以把它完全转换为一个数字。假设你想要整数,你使用strtol(尝试)将其转换为数字。这将为您提供一个指针,指向它无法转换为数字的第一个字符。如果这不是字符串的末尾,那么该"单词"不是数字(即使它以一个或多个数字开头/包含一个或多个数字)。

最新更新