逐个字符地阅读,看它是否是一个数字

时间:2012-04-19 20:00:48

标签: c++ string character

我需要这个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] != '\0') {

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

1 个答案:

答案 0 :(得分:2)

我不会尝试按角色做这个角色。问题是你现在不知道5确实是一个数字的一​​部分,直到你读到非空格字符串的末尾来验证所有的内容是合法的一部分。

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

即可阅读“字词”

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