我需要这个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;
}
}
答案 0 :(得分:2)
我不会尝试按角色做这个角色。问题是你现在不知道5
确实是一个数字的一部分,直到你读到非空格字符串的末尾来验证所有的内容是合法的一部分。
因此,我认为您需要/想要将输入分解为“单词”,然后检查每个完整单词是否可以完全转换为数字。您只需some_stream >> some_string;
一旦有了“单词”,就会检查是否可以将其完全转换为数字。假设您想要整数,可以使用strtol
来(尝试)将其转换为数字。这将为您提供指向它无法转换为数字的第一个字符的指针。如果那不是字符串的结尾,则该“字”不是数字(即使它以/包含一个或多个数字开头)。