c++의 기본 IO 유형 상세 설명
c++는 입력 과 출력 을 직접 처리 하지 않 고 표준 라 이브 러 리 의 형식 으로 IO 를 처리 합 니 다.IO 의 장 치 는 파일,콘 솔,string 일 수 있 습 니 다.c++는 주로 세 가지 IO 형식 을 정의 하 는데 각각
iostream
,fstream
,sstream
헤더 파일 에 포함 된다.표준 라 이브 러 리 는 넓 은 문 자 를 사용 하 는 언어 를 지원 하기 위해 형식 과 대상 을 wchar 로 정의 합 니 다.t 형식의 데이터.
다음은 이 세 가지 IO 라 이브 러 리 형식 과 헤더 파일 입 니 다.
ostream(와 이 드 문자 버 전 wostream),스 트림 에 데 이 터 를 기록 합 니 다.
iostream(와 이 드 문자 버 전 wiostream),읽 기와 쓰기 흐름.
ofstream(와 이 드 문자 버 전 wofstream),파일 에 데 이 터 를 기록 합 니 다.
fstream(와 이 드 문자 버 전 wfstream),파일 읽 기.
ostringstream(넓 은 문자 버 전 wostringstream),string 에 데 이 터 를 기록 합 니 다.
stringstream(넓 은 문자 버 전 wstringstream),string 읽 기.
장치 형식 과 문자 크기 는 우리 가 실행 할 IO 작업 에 영향 을 주지 않 습 니 다.계승 메커니즘 덕분에 상기 유형 은 모두
>>
,<<
연산 자 와getline()
함 수 를 사용 할 수 있다.IO 형식의 일반적인 특성
IO 대상 복사 또는 할당 불가
istream is1,is2;
is1 = is2; // ,
istream is3(is1); // ,
IO 대상 을 복사 할 수 없 기 때문에 형태 참조 나 반환 유형 을 스 트림 형식 으로 설정 할 수 없습니다.보통 인용 방식 으로 전달 하고 되 돌려 줍 니 다.그러나 전달 과 되 돌아 오 는 인용 은const
이 될 수 없다.읽 기와 쓰기 IO 대상 이 IO 대상 의 상 태 를 바 꾸 기 때문이다.즉,IO 대상 을 바 꾸 는 것 이다.IO 개체 의 상태 정보
IO 클래스 는 일부 함수 와 표지 위 치 를 정의 하여 흐름 의 상 태 를 검사 하고 조작 하 는 데 도움 을 줍 니 다.
strm::iostate
는 일종 의 유형 으로 이런 유형 은 바 이 너 리 문자열 과 같 고 모든 바 이 너 리 문자열 은 흐름 의 상 태 를 가리킨다.(strm 는 머리말 의 임의의 IO 형식 입 니 다.eof()
함 수 는 IO 대상 에서 호출 하 는 데 사 용 됩 니 다.예 를 들 어cin.eof()
.스 트림 이 감지 되면eof
(파일 끝 표지)이 함 수 는 true 로 돌아 갑 니 다.fail()
함수 사용 동상.흐름 이 붕괴 되 거나 IO 작업 이 실패 한 상태 라면 true 로 돌아 갑 니 다.bad()
함수 사용 동상.흐름 이 붕괴 상태 에 있 으 면 true 로 돌아 갑 니 다.good()
함수 사용 동상.흐름 이 유효한 상태 에 있 으 면 true 로 돌아 갑 니 다.clear()
함수 사용 동상.IO 대상 의 모든 조건 상 태 를 복원 하고 흐 르 는 상 태 를 유효 상태 로 바 꾸 어 void 로 되 돌려 줍 니 다.setstate(flags)
IO 대상 의 상 태 를 flags(유형strm::iostate
가 지시 한 대로 배치 합 니 다.rdstate()
함 수 는 IO 대상 에서 호출 되 고 IO 대상 의 상태 위 치 를 읽 으 며 유형 을 되 돌려 줍 니 다strm::iostate
.
// , ,
while(cin >> word){
// , 。
}
출력 버퍼모든 출력 흐름 은 프로그램 이 읽 고 쓴 데 이 터 를 저장 하기 위해 버퍼 를 관리 합 니 다.
cout << "Hello World!";
"Hello World!"즉시 인쇄 될 수도 있 고 운영 체제 에 의 해 버퍼 에 저장 되 어 인쇄 될 수도 있 습 니 다.다음 이 유 는 버퍼 를 새로 고 칠 수 있 습 니 다(즉,대상 장치 나 파일 에 데 이 터 를 출력 하 는 것 입 니 다).
endl
,flush
,ends
수 동 으로 버퍼 를 새로 고 칠 수 있 습 니 다(한 번 만 출력).
cout << "1" << endl; // ,
cout << "2" << flush; //
cout << "3" << ends; // , 。
연산 자 유닛 buf 설정 을 통 해 자동 으로 새로 고침 합 니 다.endl
,flush
,ends
와 달리 한 번 의 출력 에 만 사용 되 며,유 니 버 설 buf 후의 출력 흐름 은 출력 할 때마다 자동 으로 버퍼 를 새로 고 칩 니 다.
cout << unitbuf;// , 。
cout << "1"; // "1",
cout << "2"; // "2",
cout << "3"; // "3",
cout << "4"; // "4",
...
cout << "nounitbuf"; //
연관 류.연 결 된 흐름 을 읽 고 쓸 때 연 결 된 흐름 의 버퍼 가 새로 고침tie()
함수 괄호 안에 연 결 된 흐름 이 고 호출tie()
의 흐름 은 연 결 된 흐름 입 니 다.cout 와 cin 은 기본적으로 연결 되 어 있 으 며,cin 을 사용 하여 데 이 터 를 읽 을 때,cout 의 버퍼 가 새로 고 쳐 집 니 다.
cout << "Fuck you!"; // ,cout , "Fuck you!" , 。
int i;
cin >> i; //cout , "Fuck you!" ( , )。
사용tie()
함수 관련 흐름 과 해제 관련:
cin.tie(&cout); // tie(), , , 。
cin.tie(nullptr); // tie(), , cin 。
cin.tie(); // tie(), cin 。
Note:프로그램 이 충돌 하면 이상 하 게 종 료 됩 니 다.출력 버퍼 는 새로 고침 되 지 않 습 니 다.다시 말 하면 버퍼 에 있 는 데 이 터 는 파일 이나 장치 에 출력 되 지 않 았 을 수도 있 습 니 다.
파일 IO
파일 흐름 생 성
앞에서 말 했 듯 이 모든 IO 유형 은
>>
,<<
과getline()
을 사용 할 수 있 습 니 다.그 밖 에 파일 IO 는 특유 의 조작 이 있 습 니 다.파일 흐름 생 성:
fstream fstrm1; //
fstream fstrm2(s1); // s1 ( open())。s1 string c 。
//fstream fstrm3(s2, mode); , 。
Note:fstream 의 역할 영역 내 코드 가 실 행 될 때 fstream 과 관련 된 파일 이 자동 으로 닫 힙 니 다.즉,fstream 대상 이 소 멸 될 때 close()는 자동 으로 호출 됩 니 다.
open 과 close
open 으로 파일 을 열 고 close 로 파일 을 닫 습 니 다.열 린 파일 에 open 을 호출 하 는 데 실 패 했 고 failbit 가 설정 되 었 습 니 다.
string file1 = "qq.dat";
ifstream ifs;
ifs.open(file1);
//
ifs.close();
파일 모드자주 사용 하 는 파일 모드 mode 는 다음 과 같 습 니 다.
|
구분:
ofstream ofs("file1", ofstream::out | ofstream::app);
Note:out
모드 는 원본 파일 을 덮어 쓰 는 것 을 포함 하고 원본 파일 의 끝 에 데 이 터 를 추가 하려 면 명시 적 표시trunc
모드 가 필요 합 니 다.모드 가 지정 되 지 않 으 면 기본 모드 를 사용 합 니 다.
string IO
stringstream 만 의 동작 은 다음 과 같 습 니 다.
sstream strm; //sstream sstream , istringstream 。
sstream strm(s); // sstream , s 。
strm.str(); // strm string 。
strm.str(s); // string s strm。
설명:c++Basic 은'C++Primer 제5 판'에 대한 개인 적 인 정리 와 어 려 운 해석 으로 주로 한 사람 이 나중에 복습 하 는 데 사용 된다.
더 깊이 알 고 싶다 면 정품 을 지원 하 세 요.
c++의 기본 IO 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 c+io 스 트림 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
hdu 1717 소수 화 점수 2 (수학)소수 화 점수 2 레이 는 수학 시간 에 선생님 의 말씀 을 듣 고 모든 소수 가 점수 로 표시 되 는 형식 이 라 고 말 했다. 그 는 녹 기 시 작 했 고 곧 완성 되 었 다. 그러나 그 는 또 하나의 문 제 를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.