2012-05-04 4 views
0

날짜 - 일, 달 & 년의 분대를 사용자에게 신뢰할 수 있고 안전하게 묻는 기능을 만들려고 노력합니다 ... 나는 그 날짜를 물어볼 수 있습니다. ... 그러나 나는 그것을 만들 수 있어야합니다 있도록 할 수 있습니다 만 입력 번호에만, 어떤 문자없는 문자와 숫자의 어떤 조합 ... 일반 노트에cin을 위해서만 숫자를 얻는

#include <iostream> 

using namespace std; 

    int Day; 
    int Month; 
    int Year; 

int GetYear(){ 
    cout << "Enter a Year > "; 
    int nYear; 
    cin >> nYear; 
    cout << "Year: "; 
    Year = nYear; 
    return nYear; 
} 

int GetMonth(){ 
    cout << "\nEnter a Month > "; 
    int nMonth; 
    cin >> nMonth; 
    cout << "Month: "; 
    Month = nMonth; 
    return nMonth; 
} 

int GetDay(int nMonth, int nYear){ 
    cout << "\nEnter a Day > "; 
    int nDay; 
    cin >> nDay; 
    cout << "Day: "; 
    Day = nDay; 
    return nDay; 
} 

bool GetDate(int nDay, int nMonth, int nYear){ 
    cout << "\nDate: "; 
    cout << nDay << "/" << nMonth << "/" << nYear << "\n"; 
    return 0; //GetDate(Day, Month, Year); 
} 

void main() { 

    cout << GetYear(); 
    cout << GetMonth(); 
    cout << GetDay(Month, Year); 
    cout << GetDate(Day, Month, Year); 

    cout <<"Press Enter Key To Exist..."; 
    cin.ignore (numeric_limits<streamsize>::max(), '\n'); 
    cin.get(); 
} 
+1

http://www2.research.att.com /~bs/bs_faq2.html#void-main. 귀하의 질문에 대해, 문자열로 각각을 읽고 그들이 모두 숫자인지 확인한 다음 int로 변환하십시오. 또한, 이것이 수업에없는 특별한 이유가 있습니까? – chris

답변

0

: 그것은 불가능

프로그램을 호출하고 셸 (또는 Windows에서 CMD 프롬프트) 인터페이스를 사용하여 입력을받는 경우 모든 입력 처리가 셸 인터페이스에서 수행되고 쉘이 컴퓨터의 모든 프로그램에 공통적이기 때문에 필요한 문자 세트 만 받아 들일 수는 없으므로 advisable이 아닙니다.

이 자신의 쉘을 구현하고 기본 시스템 쉘로 교체하여 기술적으로 가능하지만, 이제 여기서 논의하지 말자 당신은 그것을하지 말아야 :

을 당신이 할 수있는 최선의 입력을 확인하는 것입니다 유효한 번호는 간단한 ASCII 값 확인은 당신을 위해 그것을 할 것입니다. atoi 또는 strtoul과 같은 일부 유틸리티 함수를 사용하여 주어진 입력에서 유효하지 않은 문자를 건너 뛰고 연속 숫자 만 사용할 수도 있습니다.

1

아마도 적절한 방법이 아닐 수도 있습니다 ... 나는 그것을 학교 숙제에서 사용합니다. 단지 창에서 또한

#include <iostream> 
#include <stdio.h> 
#include <conio.h> 

int getInputNumber() 
{ 
    int key; 
    do 
    { 
     key = _getch(); 
    }while (key < '0' || key > '9'); 
    std::cout << key - '0'; 
    return key - '0'; 
} 

int main() 
{ 
    int n = getInputNumber() ; 
    system("pause"); 
    return 0; 
} 

,

당신은 당신의 자신의 기능을 쓸 필요가 당신이 입력 할 수있는 것보다 숫자보다 더 큰 9.

관련 문제