2012-01-05 2 views
1

Visual Studio 2008 C++로 작성하고 다른 라이브러리 문제가 있습니다 - 그들은 txt 파일을 생성하는 줄 끝 (EOL) 허용하지 않습니다.txt 파일에서 EOL 코딩을 변경하는 방법은 무엇입니까?

좋아, 내가 코드에서 실수를했다 :

어떻게

std::ofstream myFile; 
myFile.open("traindata.txt"); 
myFile << "stuff" << endl; 
// or 
//myFile << "stuff" << '\n'; 
myFile.close(); 

편집과 2 파일을 쓰는 동안 것을 변경할 수 있습니다 나는 그 때문에 모든 반복에 대해 "0"를 추가했다 나는 EOL 앞에 공백이 있었다.

나쁨으로. 너희들은 옳았다. 도와 주셔서 감사합니다.

+1

코드 생성 라인 엔딩입니다 cygwin

또는 dos2unix, unix2dos? 이 "다른 도서관"이 기대하는 라인 엔딩은 무엇입니까? –

+0

@GregHewgill 어느 것이 생성되는지는 모르지만 LF가 필요합니다. – Patryk

+0

윈도우에서'endl' 또는'\ n'을 사용하면 텍스트 모드에서 자동으로 CRLF로 변환됩니다. –

답변

3

\ n 라인 시퀀스 종료가 발생하지 않도록 할 수 있습니까? std::ios_base::binary을 사용하여 파일을 열면 변환이 정확하게 해제됩니다. 당신이 성공했는지 확인하려는 경우가 아니면

std::ofstream myFile("traindata.txt", std::ios_base::binary); 
myFile << "stuff\n"; 

close()은 일반적으로 불필요한입니다 : 당신이 정말로 스트림을 플러시하지 않으려면 ... 그리고 std::endl를 사용하지 마십시오.

-1

Windows 스타일 엔딩의 경우 myfile << "\r\n"을, UNIX 스타일의 경우 myfile << "\n"을 사용하십시오.

+0

Windows에서는 텍스트 파일에''\ n ""을 텍스트 파일에 쓰는 것은 자동으로 \ "\ n"로 변환되기 때문에 완전한 대답은 아닙니다. –

+0

-1. myfile << ""사용 \ n "'은 텍스트 모드로 열리기 때문에 여전히 CRLF 줄 끝을 생성합니다 낮은 수준의 파일 서비스에서 대체가 수행됩니다 –

+0

@GregHewgill \ n '? – Patryk

0

자동 라인 엔딩 변환에서 C++ 라이브러리를 유지하기 위해 바이너리 모드로 파일 스트림을 열어야합니다 : OS 별 EOL 심볼에 '\ n을을'변환에서 C++ 라이브러리를 유지합니다

myFile.open("traindata.txt", std::ios_base::out|std::ios_base::binary); 

(CR- Windows의 경우 LF).

0

notepad ++ 다운로드 - 문제를 해결할 수 있어야합니다.

관련 문제