StringStream 내용을 Ofstream에 쓰기
-
11-07-2019 - |
문제
현재 사용 중입니다 std::ofstream
다음과 같이 :
std::ofstream outFile;
outFile.open(output_file);
그런 다음 통과하려고합니다 std::stringstream
대상 outFile
다음과 같이 :
GetHolesResults(..., std::ofstream &outFile){
float x = 1234;
std::stringstream ss;
ss << x << std::endl;
outFile << ss;
}
이제 내 outFile
"0012E708"이 반복되는 쓰레기 만 포함합니다.
~ 안에 GetHolesResults
난 쓸수있다
outFile << "Foo" << std:endl;
그리고 올바르게 출력됩니다 outFile
.
내가 잘못하고있는 일에 대한 제안이 있습니까?
해결책
문자열을 만들 필요가없는이 작업을 수행 할 수 있습니다. 출력 스트림이 오른쪽의 스트림 내용을 읽습니다 (모든 스트림으로 사용할 수 있음).
outFile << ss.rdbuf();
다른 팁
사용중인 경우 std::ostringstream
그리고 왜 아무것도 쓰지 않았는지 궁금합니다 ss.rdbuf()
그런 다음 사용하십시오 .str()
기능.
outFile << oStream.str();
Stringstream rdbuf를 스트림 신형으로 통과시킬 때는 번역되지 않습니다. 입력 텍스트에 포함될 수 있습니다 \n
따라서 교체가 작동하지 않습니다. 오래된 코드는 FSTREAM에 썼고이를 ENDL 번역을 스트링 스트림 손실로 전환합니다.
차라리 글을 쓰고 싶습니다 ss.str();
대신에 ss.rdbuf();
(그리고 stringstream을 사용하십시오).
사용하는 경우 ss.rdbuf()
형식-플래그 outFile
코드를 재사용 할 수없는 재설정합니다. 즉, 발신자 GetHolesResults(..., std::ofstream &outFile)
테이블에 결과를 표시하기 위해 이와 같은 글을 쓰고 싶을 수도 있습니다.
outFile << std::setw(12) << GetHolesResults ...
... 왜 너비가 무시되는지 궁금합니다.