2014-04-05 6 views
2

입력이 유효하지 않은 경우 cin에서 잘못된 입력을 추출하여 해당 변수에 저장하고 싶습니다. 어떻게해야합니까?cin 데이터를 맞는 변수에 추출합니다

#include<iostream> 

using namespace std; 

int main(){ 
    int number; 
    cout << "Enter a number: " << endl; 
    cin >> number; 

    if(cin.fail()){ 
    cout << "Error!" << endl; 
    //HOW CAN I STORE THE INVALID INPUT WHICH IS STORED IN cin INTO A STRING? 
    } 

return 0; 

}

당신이 failbit이 설정되어 있는지 감지
+0

당신이 문자열 변수를 사용하여 시도 할 수 있습니다 , gets()를 사용하십시오. after cin >> number; 사용자가 숫자가 아닌 값을 입력하면 해당 문자열로 이동합니다. – Himanshu

+0

string 또는 stringstream에 입력 한 다음 숫자로 파싱을 시도하십시오. – berkus

+0

어떻게 할 수 있습니까? –

답변

1

, 재설정 및 std::cin에서 std::string에 유효하지 않은 입력의 전체 라인을 읽을 std::getline를 사용

#include <iostream> 
#include <string> 


int main() 
{ 
     int number; 

     while(true) 
     { 
       std::cout << "Enter a number (0 to exit): " << std::endl; 
       std::cin >> number; 

       if(std::cin.fail()) 
       { 
         std::string error_data; 
         std::cin.clear(std::cin.rdstate() & ~std::ios::failbit); 
         std::getline(std::cin, error_data); 
         std::cout << "You didn't enter a number - you've entered: " << error_data << std::endl; 

       } 
       else 
       { 
         std::cout << "Number is: " << number << std::endl; 
         if(number == 0) 
         { 
           break; 
         } 
       } 

     } 
     return 0; 
} 
+0

감사합니다 Nemanja Boric. 도움에 정말 감사드립니다. –

관련 문제