저는 방금 std::fstream
이 실제로 작동해야하는 std::ios::in
과 std::ios::out
으로 어떻게 열렸는지 궁금해했습니다. 어떻게해야합니까? 빈 파일에 뭔가를 쓰고 읽으십시오. 뭐라 구요? 그냥 서면 가치? 파일 "포인터"/ "커서"는 어디에 있습니까? 어쩌면 이미 그 해답을 찾을 수 있었을 것입니다.std :: fstream과 in 및 out 모두 작동해야하는 방법은 무엇입니까?
답변
std::fstream
은 무엇입니까?
std::fstream
은 양방향 파일 스트림 클래스입니다. 즉, 파일 입출력을위한 인터페이스를 제공합니다. 사용자가 동일한 외부 시퀀스를 읽고 쓰고 자 할 때 주로 사용됩니다.
(std::ofstream
또는 std::ifstream
달리) 양방향 파일 스트림을 인스턴스화의 openmodes ios_base::in
및 ios_base::out
는 기본적으로 을 지정됩니다.
std::fstream f("test.txt", std::ios_base::in | std::ios_base::out);
들이 일부 기본이 아닌 openmodes을 추가 필요한 경우 두 옵션을 지정합니다
std::fstream f("test.txt");
것과 동일 같은 trunc
, ate
, app
또는 binary
등이이 있음을 의미한다. ios_base::in
오픈 모드로 인해 새 파일을 만들 수 없기 때문에 에 새 파일을 만들려는 경우 ios_base::trunc
오픈 모드가 필요합니다.
양방향 I/O
양방향 I/O 입력 및 출력 모두 양방향 스트림의 이용이다. IOStreams에서 표준 스트림은 문자 시퀀스를 버퍼에 유지합니다.이 시퀀스는 데이터 소스 또는 싱크 역할을합니다. 출력 스트림의 경우 "put"영역 (출력을 위해 문자를 보유하는 버퍼)이 있습니다. 마찬가지로 입력 스트림의 경우 "get"영역이 있습니다.
(입력 과 출력 모두의 클래스)의 경우, get 및 put 영역을 각각 나타내는 공동 파일 버퍼를 보유합니다. 파일의 현재 위치를 표시하는 위치 표시기는 입력과 출력 조작의 영향을받습니다.
- 당신이 쓰기 또는 그 반대의 후 읽기를 수행는, 스트림이 다시 재배치해야한다 : 따라서 순서대로 양방향 스트림에서 제대로 I/O를 수행하기 위해, 당신이 따라야 일정한 규칙이 있습니다.
- 입력 작업이 파일 끝을 치는 경우 그 이후에 직접 쓰기를 수행하는 것이 좋습니다.
이것은 단지 std::fstream
을 나타냅니다. 위의 규칙은 std::stringstream
에는 필요하지 않습니다.
이 답변이 귀하의 질문에 도움이되기를 바랍니다. 더 이상 가지고 있다면, 당신은 단지 의견에 물을 수 있습니다.