c++ 파일을 읽어서 안에 있는 한글내용을 비교해야 하는데 비교가 안됩니다. ㅠㅠ
hexa값을 찍어서 확인해 봤는데요... hexa값을 제대로 찍은 건지는 잘 모르겠지만 string 변수에 한글을 임의로 넣어준 부분과 파일에서 읽어서 넣어준 부분이 hexa값이 다릅니다.
인코딩방식이 문제인지 정확한 원인이 뭔지 모르겠네요. ㅠㅠ 도움 좀 부탁드리겠습니다.
test.dat 내용:
한글
한글
한글
test.c
#include <iostream> #include <fstream> #include <string.h> #include <string> int main() { std::string file = "test.dat"; std::string sline; std::string ko = "한글"; std::ifstream in; char line[1024]; in.open(file.c_str(), std::ios::in); if (!in.is_open()) { std::cerr << "error"; return 1; } while (in.getline(line, 1024)) { // hexa 값 확인 for(int i=0; i<strlen(line); i++) printf("file:[%x]\n", line[i]); sline = line; for(int i=0; i<sline.size(); i++) printf("sline:[%x]\n", sline[i]); for(int i=0; i<ko.size(); i++) printf("ko:[%x]\n", ko[i]); if(sline == "한글") std::cout << sline << "correct" <<std::endl; else std::cout << sline << "incorrect" <<std::endl; } in.close(); return 0; }
결과:
file:[ffffffc7]
file:[ffffffd1]
file:[ffffffb1]
file:[ffffffdb]
sline:[ffffffc7]
sline:[ffffffd1]
sline:[ffffffb1]
sline:[ffffffdb]
ko:[ffffffed]
ko:[ffffff95]
ko:[ffffff9c]
ko:[ffffffea]
ko:[ffffffb8]
ko:[ffffff80]
한글incorrect
file:[ffffffc7]
file:[ffffffd1]
file:[ffffffb1]
file:[ffffffdb]
sline:[ffffffc7]
sline:[ffffffd1]
sline:[ffffffb1]
sline:[ffffffdb]
ko:[ffffffed]
ko:[ffffff95]
ko:[ffffff9c]
ko:[ffffffea]
ko:[ffffffb8]
ko:[ffffff80]
한글incorrect
file:[ffffffc7]
file:[ffffffd1]
file:[ffffffb1]
file:[ffffffdb]
sline:[ffffffc7]
sline:[ffffffd1]
sline:[ffffffb1]
sline:[ffffffdb]
ko:[ffffffed]
ko:[ffffff95]
ko:[ffffff9c]
ko:[ffffffea]
ko:[ffffffb8]
ko:[ffffff80]
한글incorrect
댓글 달기