입력 파일이 문자로 시작되면 int1
을 다시 쓸 수 없기 때문에 while 루프를 멈추게됩니다.하지만 이걸 감지 할 수 있으면 어떻게하면 workinfile>>int1
이 작동하지 않고 루프를 계속한다는 오류 메시지가 나타납니다 ? ifstream while 루프를 사용하면 입력 오류를 표시하고 다음 줄에서 재개하는 방법은 무엇입니까?
cin>>filename;
ifstream workingfile(filename);
while (workingfile>>int1>>int2>>string1>>string2) {
cout<<int1<<int2<<string1<<string2<<endl;
linenumread++;
}
내가 노력을하고 있지만 작동하지 않는, 어떤 도움은 그것뿐만 아니라 문자열을 읽기를 정지하는 경우 검출 할 수있을 것이다 또한
while (workingfile>>int1>>int2>>string1>>string2) {
if(!(workingfile>>int1))
{
cout<<"Error first value is not an integer"<<endl;
continue;
}
cout<<int1<<int2<<string1<<string2<<endl;
linenumread++;
}
을 감상 할 수있다?
입력 파일은 내가 잘못된 입력을 칠 때, 검출 오류 메시지를 표시하고, 파일의 다음 라인을 계속하려면이
10 10 ab bc
11 11 cd ef
a
12 12 gh hi
과 같을 것이다.
while 루프가 유효하지 않은 입력에서 중단됩니다 : 다음과 같이 보일 것이다
. 최선의 방법은 루프 상태에서'std :: getline()'을 사용하여 완전한 라인을 읽고'std :: istringstream'을 사용하여 문자열을 파싱하고 각 값을 검사하는 것입니다. – user0042
스택 오버플로에 오신 것을 환영합니다! 코드가 불완전합니다. 특히'main()'함수와 적어도 하나의'#include '함수가 빠져있는 것 같습니다. 코드를 [편집]하여 문제의 [mcve]가되도록 만드십시오. 그런 다음 재현하고 해결할 수 있습니다. 또한 [ask]를 읽어야합니다. –
@TobySpeight 여기서 전체 코드를 제공 할 필요는 없습니다. 이 문제는 주어진 예제에서 꽤 분명합니다. 나는 오늘 더 심한 질문을 보았다. – user0042