일부 Microsoft보고 도구를 사용하여 만든 텍스트 파일이 있습니다. 텍스트 파일은 처음에 BOM
0xFFFE
을 포함하고 문자 사이에 널 문자 (예 : "F.i.e.l.d.1.
")가있는 ASCII
문자 출력을 포함합니다. 나는 iconv
을 사용하여 이것을 UTF-8
으로 변환 할 수 있으며, UCS-2LE
을 입력 형식으로 사용하고 UTF-8
을 출력 형식으로 사용하면 ... 훌륭합니다.UCS-2LE 텍스트 파일 구문 분석
내 문제는 UCS-2LE
파일의 줄을 문자열로 읽고 필드 값을 구문 분석 한 다음 ASCII
텍스트 파일 (예 : Field1 Field2
)에 써야한다는 것입니다. string
및 wstring
기반 버전의 getline
을 시도했습니다. 파일에서 문자열을 읽는 동안 값으로 문자열을 해석하므로 시작 및 길이 값이 꺼집니다.
UCS-2LE
데이터를 C++
문자열로 읽고 데이터 값을 추출하려면 어떻게해야합니까? 나는 수많은 구글 검색뿐만 아니라 boost
과 icu
을 보았지만 아무 것도 발견하지 못했다. 내가 여기서 무엇을 놓치고 있니? 도와주세요!
내 예제 코드는 다음과 같습니다
wifstream srcFile;
srcFile.open(argv[1], ios_base::in | ios_base::binary);
..
..
wstring srcBuf;
..
..
while(getline(srcFile, srcBuf))
{
wstring field1;
field1 = srcBuf.substr(12, 12);
...
...
}
그래서, 경우, 예를 들어, srcBuf
이 substr()
반환 위의 다음 대신 "g.e.n.e.r.a.l.i.t.i.e.s.
"의 ".k. i.n. g.e
"을 "W.e. t.h.i.n.k. i.n. g.e.n.e.r.a.l.i.t.i.e.s.
"를 포함하고 있습니다.
내가 원하는 것은 멀티 바이트 표현에 대해 걱정할 필요없이 문자열을 읽고 처리하는 것입니다. 누구든지 boost
(또는 다른 것)을 사용하여 파일에서이 문자열을 읽고 내부 사용을 위해 고정 너비 표현으로 변환하는 예가 있습니까?
나는 Mac에서 Eclipse와 gcc를 사용하고 있습니다. STL
은 넓은 문자열을 인식하지 못합니까?
감사합니다.
답장을 보내 주셔서 감사합니다. 나는 같은 행동을 본다. 당신이 말했듯이, 나는 wchar_t에 대한 UTF-16이 지원되지 않는다고 생각한다. iconv를 사용하여 파일을 UFT-8로 변환하고 문제가 해결되었습니다. – Cryptik
나는 아마 여기에 유령을 다루고 있지만, @ Cryptik은 해결 된 것처럼 그의 질문을 표시해야합니다 :) – Dr1Ku