문제

현재 사용 중입니다 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 ...

... 왜 너비가 무시되는지 궁금합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top