C++에서 cin.fail 메서드 사용
-
fail
메서드를 사용하여 C++의 스트림 개체에서 오류가 발생하는지 확인 -
good
메서드를 사용하여 C++의 스트림 개체에서 오류가 발생하는지 확인 - Stream 개체를 식으로 사용하여 C++에서 오류가 발생하는지 확인
이 기사에서는 C++의 스트림 객체에서 fail
메소드를 올바르게 사용하는 여러 방법을 보여줍니다.
fail
메서드를 사용하여 C++의 스트림 개체에서 오류가 발생하는지 확인
fail
메소드는 basic_ios
클래스의 내장 함수이며 지정된 스트림에 잘못된 상태가 있는지 확인하기 위해 호출 할 수 있습니다. 이 함수는 인수를 취하지 않으며 스트림 객체에 오류가 발생하면 부울 값 true
를 반환합니다. 스트림 객체에는 현재 상태를 설명하는 여러 상수 비트가 있습니다. 이 상수는-goodbit
,eofbit
,failbit
및badbit
입니다. failbit
이 설정되어 있으면 작업이 실패했지만 스트림 자체는 양호한 상태임을 의미합니다. 스트림이 손상되면badbit
가 설정됩니다. fail
메소드는 주어진 스트림 객체에badbit
또는failbit
가 설정된 경우 true를 반환합니다.
#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::ifstream;
using std::ostringstream;
using std::string;
int main() {
string filename("tmp.txt");
string file_contents;
auto ss = ostringstream{};
ifstream input_file(filename);
if (input_file.fail()) {
cerr << "Could not open the file - '" << filename << "'" << endl;
exit(EXIT_FAILURE);
}
ss << input_file.rdbuf();
file_contents = ss.str();
cout << file_contents;
exit(EXIT_SUCCESS);
}
good
메서드를 사용하여 C++의 스트림 개체에서 오류가 발생하는지 확인
또는good
내장 함수를 호출하여 스트림 객체가 양호한 상태인지 확인할 수 있습니다. 스트림 상태에 설정된goodbit
상수는 다른 모든 비트가 지워짐을 의미하므로 확인하면 스트림의 양호한 상태를 의미합니다. 이러한 상수는ios_base
클래스 내에서 정의되며std::ios_base::goodbit
로 참조 될 수 있습니다. 다음 코드 예제는 good
메서드 반환 값의 논리적 부정을 스트림에서 오류를 확인하는 조건으로 지정할 수 있음을 보여줍니다.
#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::ifstream;
using std::ostringstream;
using std::string;
int main() {
string filename("tmp.txt");
string file_contents;
auto ss = ostringstream{};
ifstream input_file(filename);
if (!input_file.good()) {
cerr << "Could not open the file - '" << filename << "'" << endl;
exit(EXIT_FAILURE);
}
ss << input_file.rdbuf();
file_contents = ss.str();
cout << file_contents;
exit(EXIT_SUCCESS);
}
Stream 개체를 식으로 사용하여 C++에서 오류가 발생하는지 확인
이전 방법 인fail
및good
은 코드를 더 읽기 쉽게 만들기 때문에 최신 C++ 스타일에서 스트림 오류를 평가하는 데 권장되는 방법입니다. 스트림 객체 자체를 표현식으로 지정하여 오류가 발생하는지 확인할 수도 있습니다. 후자의 방법은 더 모호하지만 오류 검사 조건문을 구현하는 올바른 방법입니다.
#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
using std::cerr;
using std::cout;
using std::endl;
using std::ifstream;
using std::ostringstream;
using std::string;
int main() {
string filename("tmp.txt");
string file_contents;
auto ss = ostringstream{};
ifstream input_file(filename);
if (!input_file) {
cerr << "Could not open the file - '" << filename << "'" << endl;
exit(EXIT_FAILURE);
}
ss << input_file.rdbuf();
file_contents = ss.str();
cout << file_contents;
exit(EXIT_SUCCESS);
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook