1

我需要有关此 if 语句的帮助。我试图读取每个字符以查看它是否是数字。如果它不是一个数字,那么如果它继续阅读到下一个字符,就说它不是一个数字。例如,如果用户输入 54gr 21 gr42 134 3f3。唯一可以计算的是 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] != '\0') {

        if(string[count] >= '0' && string[count] <= '9' )
            cout << count << endl;
            }
           ++ count;
    }
    } 
4

1 回答 1

2

我不会尝试逐个字符地做这个。5问题是,在您阅读到非空格字符字符串的末尾以验证所有内容是否合法地是数字的一部分之前,您现在并不认为它真的是数字的一部分。

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

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

于 2012-04-19T20:14:43.287 回答