2012-04-19 3 views
1

Мне нужна помощь с этим оператором 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

Вы почти у цели. Что за вопрос? –

+0

Номера принимают различные формы. Вы не обрабатываете десятичные точки или экспоненты. Важна ли локализация? Если это усложнится. Кроме того, зачем использовать char aray, когда вы находитесь на земле C++, и можете использовать 'std :: string'? Я даже не знаю, в чем вопрос. Как насчет отображения - это вход, который * не работает *? –

ответ

2

Я бы не стал пытаться делать этот персонаж по характеру. Проблема в том, что теперь вы не видите, что 5 действительно является частью числа, пока вы не прочитали до конца строки непространственных символов, чтобы убедиться, что все содержание является законно частью числа.

Как таковой, я думаю, вам нужно/нужно сломать вход в «слова», а затем проверить, может ли каждое полное слово полностью преобразовываться в число. Вы можете читать «слова» только с some_stream >> some_string;

Как только у вас есть слово, вы проверяете, можете ли вы полностью преобразовать его в число. Предполагая, что вам нужны целые числа, вы используете strtol, чтобы (попытаться) преобразовать его в число. Это даст вам указатель на первый символ, который он не смог бы преобразовать в виде числа. Если это не конец строки, тогда это «слово» не было числом (даже если оно начиналось с/содержало одну или несколько цифр).

Смежные вопросы