2014-12-17 3 views
0

사용자를 위해 잠깐 멈추는 멋진 작은 스 니펫을 발견했지만 어떤 선택도 허용하지 않습니다. 사용자가 입력 파일 이름을 잘못 입력 한 경우 사용자가 종료하거나 다시 입력 할 수 있도록 허용하려고합니다. 물론 파일이 존재하지 않으면 프로그램이 종료되지만 사용자가 그 결정을 내리는 것이 더 좋습니다.사용자 수정 입력 일시 중지

void pause() { 
cout << "Press ENTER to continue..."; 
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
    } 

은 호출 프로그램은 잘못된 파일 이름을

std::string name; 
std::cout << "Please, enter your file name: "; 
std::getline (std::cin,name); 
std::cout << "Hello, " << name << '\n'; 
pause(); 
std::ifstream is (name.c_str(),ios::in | std::ifstream::binary); 

출력을 snippet- -

코드가 사용자에게 파일을 다시 입력 할 수있는 기회를 제공하기 위해 변경 될 수있는 방법
Please, enter your file name: col.tat 
Hello, col.tat 
Press ENTER to continue... 

file not found --- col.tat 

unix% 

이름. 나는 아마 나쁜 파일 이름에 대해서는 그렇지만 사용자가 예를 들어 어제의 작업과 같이 잘못된 파일 이름을 입력하면 실패 할 것이라고 생각한다.

답변

0
std::ifstream is; 
do 
{ 
    std::string name; 
    std::cout << "Please, enter your file name: "; 
    std::getline (std::cin,name); 
    std::cout << "Hello, " << name << '\n'; 
    pause(); 
    is.open(name.c_str(),ios::in | std::ifstream::binary); 
} while (!is.is_open()) 

is이 지정된 파일을 열 때까지 반복됩니다. (!이다) 동안 논리가 큰 것을

0

는 유일한이며,이 경우에는 동안은 솔루션에

`처럼 사소한 모드와

작동이 작동하고 내가 원하는 것을한다. `

관련 문제