입력 문자열이 올바른 형식 (올바른 형식 XXX-X-XXX)으로 작성되도록 노력하고 있지만 char temp [255]와 cin을 사용하지 않을 것입니다. getline 조합.C++에서 올바른 문자열 입력을 보장하십시오.
등록 판를 입력 : shjkf 22H 23jfh3kfh jkfhsdj h2j h2k 123-A-456
으로는 가정 regPlate
지금까지 나는이 일 외에 모든 예외 "캐치"를 관리했습니다 끝에서 올바른 형식의 문자열을 포함하여 입력에서 모든 문자열을 가져오고 문자열을 인쇄합니다. 올바르지 않습니다. 첫 번째 문자열을 읽은 후에는 잘못된 입력과 그 이후의 모든 내용을 삭제해야합니다.
cin.clear()
, cin.ignore()
등을 사용해 보았습니다. 내 에있는 경우이 작동하지만 결과가 없습니다.
void main()
{
std::string regPlate;
do
{
cout << "Enter registration plate: ";
cin >> regPlate;
if (regPlate.size() < 9 || regPlate.at(3) != '-' || regPlate.at(5) != '-' || regPlate.size() > 9)
{
cout << "Bad entry" << endl;
}
} while (regPlate.size() < 9 || regPlate.at(3) != '-' || regPlate.at(5) != '-' || regPlate.size() > 9);
cout << endl << regPlate << endl;
system("pause");
}
를 사용하는 대신
std::cin>>regPlate
이다. '9'와 같은 크기가 아닌지를 한 번 확인하십시오. –문제에 관해서는 ['std :: getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline)을 찾고 계십니까? –
@Someprogrammerdude "그러나 나는 char temp [255]와 cin.getline 조합을 사용하지 않을 것입니다." –