2017-04-30 8 views
0

텍스트 파일을 검색하고이 파일에 들어있는 이름 목록을 만드는 프로그램을 작성해야합니다. 모든 이름은 "[PRG]"문구 뒤에 놓입니다. 그래서 나는 "PRG"를 찾고 다음 단어를 읽길 원합니다. 이 파일의 인코딩은 UCS-2 LE이기 때문에 나는 문제가있다. 나는 "문자열"대신에 "wstring"변수를 사용할 필요가 있다는 것을 알았습니다. 하지만 나는 이상한 값을 파일에서 읽는 중이며 "PRG"문구와 비교할 수는 없다는 것을 알았습니다. 여기 C++ UCS-2 LE 인코딩을 사용하여 파일에서 문구 검색

코드입니다 :

int main() { 
wstring textBuff; // Buffor for reading text from a file 
wstring searchBuff = L"PRG"; // Variable containing searching phrase 

wifstream file; 
file.open("programs.prg", ios::in | ios::binary); 

if (file.good()) { 
    // Reading file and listing every word after "PRG" phrase 
    while (!file.eof()) { 
     file >> textBuff; 
     if (textBuff.find(searchBuff) != string::npos) 
      wcout << textBuff << endl; 
    } 
} 
file.close(); 
system("pause"); 
return 0; 
} 

내가 프로그래밍에 새로운, 그래서 제 질문은 사소한 경우 미안 해요,하지만 난 붙어있어 나는 내가 할 수있는 다른 무엇인지 전혀 모른다. 미리 감사드립니다. .prg file

그것은 다른 데이터의 무리를 포함,하지만 내가 원하는 것은 베이킹 프로그램의 이름 목록을 확인하는 것입니다 : 여기

내가 데이터를 얻기 위해 노력하고있어 PRG 파일입니다. 그래서 나는 [PRG]를 찾고 싶다. 다른 두 단어를 읽고, 베이킹 프로그램의 이름 인 나머지 줄을 얻는 것보다.

답변

0

파일의 데이터 사본이나 큰 유사성을 가진 일부 데이터를 보지 않아도별로 도움이되지 않습니다.

많은 문제가 발생하며 사용자가 "프로그래밍에 익숙하지 않다"고 부르는 이래로 문제가 될 수 있습니다. http://hackipedia.org/Character%20sets/Unicode,%20UTF%20and%20UCS%20encodings/UCS-2.htm

에서 일부 연구 읽기를 수행하여

시작은 특히 섹션 제목 : 데이터가 "PRG"라벨 후 BOM을 가지고 바이트 순서 인코딩 방식

경우, 당신이 처리 할 것 특히 https://msdn.microsoft.com/en-us/library/mt771556.aspx

... 해당 엔디안 코딩하여

또한에서 재료에 읽어 하단에 메모 ...

Dr t

+0

답장을 보내 주셔서 감사합니다. 파일을 내 메인 포스트에 추가했습니다. 프로그램을 디버깅 한 후 첫 번째 값은 " ',' ',' ','\ 0 ','T '\ 0', 'Y', '\ 0', 'P' \ 0 ''] ''대신 "[TYP]"를 입력하십시오. 나는 처음 두 글자가 BOM이되어야한다고 생각하지만, 나는 그것에 대해 내가 할 수있는 것을 정말로 모른다. 그 (것)들을 제거하는 어떤 방법 있는가? "찾기"기능 만 있으면됩니다. 이 프로그램의 유일한 부분은 효과가 없습니다. – WhiteBambo