퀵바


강호정담

우리 모두 웃어봐요! 우리들의 이야기로.



혹시 C++ 하시는 분...?

작성자
Personacon 엔띠
작성
14.03.02 18:48
조회
2,002

저 과제의 유일 문제점을 파악해서 분석하는 것에는 성공했습니다만,

문제의 해결법을 찾지 못하고 있습니다.

혹여나 정확한 지식이 아니더라도, 문제해결의 방향만 제시해주셔도 좋습니다.


STL의 ifstream으로 파일(txt)을 불러오고,

그걸 open으로 열어서 eof를 이용해 하나씩 전진하며

get을 통해 하나씩 전진하는 모든 글자를 string에 저정해버리는 방식을 쓰고 있습니다.

이게 잘되는데 유일한 문제점이, 바로 한글은 1바이트가 아니라 2바이트라서,

character형 변수에 저장이 되지 않는다는 겁니다.

그렇다보니 파일 전체의 크기도 실제와는 오차가 발생해버리고 있습니다.

2바이트인 한글은 character가 아니라 string에 저장해야 하는 듯한데,

get을 통해 하나씩 꺼내면 string 저장은 불가피하고 character 저장만이 가능하겠죠.

그렇다고 get 대신에 한 번에 2바이트인 한글을 빼올 수도 없는 것처럼 보이고, 만일 그게 가능하다면 1바이트인 알파벳이나 숫자를 빼버릴 때 문제가 생길 듯 싶고요.

지금 꺼내려는 값을 분석해서 이놈이 한글인지 아닌지, 1바이트인지 아닌지를 구분해서 다르게 저장하려고 해도 여간 복잡하고요.


네이버에는 답을 올려도 답변이 안 오고요......

혹시 해결방법을 아시는 분 계신가요?

아니면 C++ 정보 교환하는 사이트라도...


Comment ' 14

  • 작성자
    Personacon 적안왕
    작성일
    14.03.02 19:18
    No. 1

    아래 링크 한번 봐주시겠어요?
    http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=184239113&qb=YysrIO2VnOq4gCAy67CU7J207Yq4IGdldA==&enc=utf8§ion=kin&rank=1&search_sort=0&spq=0&pid=RxKvnlpySDlssu3QWtssssssstR-398312&sid=UxL-QgpyVloAABs0c5E

    찬성: 0 | 반대: 0

  • 답글
    작성자
    Personacon 엔띠
    작성일
    14.03.02 19:26
    No. 2

    볼 때마다 신기합니다........ 예전 스페이드부터 시작해서. 검색 능력이 발군이신........
    해답까지는 아니지만, 뭔가 힌트는 얻었습니다. %128을 연산하면 한글인지 아닌지를 알 수 있다....
    문제는 한글이 2바이트라고 해서, 1바이트 2번으로는 얻어낼 수 없다는 것에 있죠 ㅜㅜ

    찬성: 0 | 반대: 0

  • 답글
    작성자
    Personacon 적안왕
    작성일
    14.03.02 19:30
    No. 3

    한글 코드 관련 자료입니다.
    제가 처음에 단 댓글은 별 도움이 안될 듯한 것이 ; . ;
    http://lifeiseggs.tistory.com/523
    아래 링크는 한글 판별이라네요.
    http://lifeiseggs.tistory.com/522

    찬성: 0 | 반대: 0

  • 작성자
    Lv.82 디메이져
    작성일
    14.03.02 19:35
    No. 4

    음. 그러니 멀티바이트를 버리고 유니코드로 전환하세요.

    찬성: 0 | 반대: 0

  • 답글
    작성자
    Lv.82 디메이져
    작성일
    14.03.02 19:39
    No. 5

    char형 쓰는 걸 버리고 tchar형 쓰는 걸 추천.

    찬성: 0 | 반대: 0

  • 답글
    작성자
    Personacon 엔띠
    작성일
    14.03.02 19:43
    No. 6

    지금부터 바로 검색은 하겠지만 조금 더 자세한 정보를 부탁드립니다.

    찬성: 0 | 반대: 0

  • 작성자
    Lv.76 석박사
    작성일
    14.03.02 19:43
    No. 7

    말씀하시는 저 과제가 뭔가요?

    찬성: 0 | 반대: 0

  • 답글
    작성자
    Personacon 엔띠
    작성일
    14.03.02 19:43
    No. 8

    어느 회사 과제전형 ;ㅅ;

    찬성: 0 | 반대: 0

  • 작성자
    Lv.76 석박사
    작성일
    14.03.02 19:45
    No. 9

    아니.. 질문하시는 바가 정확히 뭔지를 모르겠어서요

    찬성: 0 | 반대: 0

  • 작성자
    Lv.76 석박사
    작성일
    14.03.02 19:46
    No. 10

    파일 복사면 버퍼에 한꺼번에 집어넣어서 처리해도 될텐데 한 글자씩 복사하시는 이유를 잘 모르겠습니다. 다른 특별한 제약조건이 있는지요?

    찬성: 0 | 반대: 0

  • 답글
    작성자
    Personacon 엔띠
    작성일
    14.03.02 19:51
    No. 11

    걍 제가 잘 모르는 것도 있고, 이 과제에서 요구하는 조건 때문에 하나씩 읽는 편이 낫다고 생각되서입니다.

    찬성: 0 | 반대: 0

  • 작성자
    Personacon HAWX
    작성일
    14.03.02 19:51
    No. 12

    char 형식의 ifstream 대신 wchar_t 형식인 wifstream을 써보시기 바랍니다.
    뭐, VC++에서는 유니코드 환경인지, 아닌지에 따라서 매크로를 지원하기 때문에
    tifstream, tofstream을 사용하시면 알아서 ifstream이냐 wifstream이냐가 갈리니 좋습니다.

    이 때, char 형식이 아니라 wchar_t (매크로로는 TCHAR)를 사용하셔야 합니다.

    찬성: 0 | 반대: 0

  • 작성자
    Personacon 구라백작
    작성일
    14.03.02 20:16
    No. 13

    unsigned char형을 써보세요. 1바이트씩 읽더라도 문제가 없는 것이 한글 및 유니코드는 캐릭터셋이 a~Z 까지 이외의 형을 사용 합니다. (정수형 값으로 캐릭터셋은 0~255까지의 숫자를 이용 합니다. 이것을 조합해서 유니코드,euckr등의 2바이트 문자형을 만듭니다.)
    즉, 1바이트씩 로드할때 특수문자,0~9,a~Z이외는 2바이트로 나중에 합치면 됩니다.
    c++의 초기형은 표준C이죠. 표준C의 확장형+객체지향이 포함 된 것이 c++입니다.
    기본 C에만 충실해도 c++도 어느정도 커버가 됩니다.
    그리고 과제 내용을 오픈 하는 것이 더 나을듯 합니다. ^^;;

    찬성: 0 | 반대: 0

  • 작성자
    Personacon 엔띠
    작성일
    14.03.02 20:23
    No. 14

    C++ 급조 및 독학의 한계가 드러나고 있습니다.
    그리고 과제 공개는... 사측에서 원하지 않는 정도가 아니라 공개하지 마라라고 엄포를 놓았기에 불가합니다.
    몇몇 코드를 보기는 했지만 이제 스스로 해석하고 적용할 수 있는 단계는 지난 것 같군요.

    찬성: 0 | 반대: 0


댓글쓰기
0 / 3000
회원가입

강호정담 게시판
번호 제목 글쓴이 날짜 조회
213539 으하하하하하하 개강입니다! +2 Lv.14 한신자 14.03.02 723
213538 카타클리즘 DDA를 하면서 현대문명은 얼마나 뜯어낼게 많... Lv.96 강림주의 14.03.02 1,630
213537 수천, 수만명에서 포켓몬스터를 한다면? +6 Lv.25 예로나 14.03.02 1,254
213536 하하하... 야식 먹고 잠이나 잘까... +1 Personacon 엔띠 14.03.02 806
213535 여군물 없나요? +2 Lv.67 레몬티한잔 14.03.02 1,357
213534 여자를 주인공으로 하는 현대판타지는 없나요? +6 Lv.72 릿터 14.03.02 1,110
213533 주말동안 싸지방비만 5천원이상;; +10 Lv.29 qw******.. 14.03.02 1,611
213532 읽을 만한게 없네요. +9 Lv.67 제르미스 14.03.02 1,082
» 혹시 C++ 하시는 분...? +14 Personacon 엔띠 14.03.02 2,003
213530 화이트 데이를 위한 포장... +10 Personacon 적안왕 14.03.02 879
213529 벌써 일주일째 금주중.... +5 Lv.24 약관준수 14.03.02 808
213528 플래티넘 볼만한 거 추천해주세요. +8 Lv.68 임창규 14.03.02 1,126
213527 중고 책의 프리미엄 +25 Lv.7 월하몽 14.03.02 1,737
213526 박주영은 이제 액받이 무녀 라는소리까지듣네요 +7 Lv.99 골드버그 14.03.02 1,512
213525 가슴이 터질 것 같은 모험이라고 할것을 +9 Lv.61 정주(丁柱) 14.03.02 1,231
213524 입대 전 술을 얼마나 드시나요? +15 Lv.5 푸리푸리롱 14.03.02 2,255
213523 일주일 유예 준 과제전형 이틀만에 종료...... +4 Personacon 엔띠 14.03.02 1,169
213522 옆 동네 용병과 네이버 덴마는 공통점이 있죠. +21 Lv.90 부정 14.03.02 1,820
213521 이 친구들이 영상을 진짜 잘찍긴 했어요. +6 Lv.18 터베 14.03.02 1,204
213520 동영상 어케 올리징 +2 Lv.8 진짜냐 14.03.02 907
213519 장기간 들고 이동할떈 등이 편할꺼라... +5 Lv.18 터베 14.03.02 1,162
213518 반지의 제왕 vs 해리포터 +6 Lv.17 KaleidoS.. 14.03.02 1,153
213517 나이는 그저 숫자에... ... +3 Lv.10 살라군 14.03.02 1,170
213516 영화 속 나오는 판타지 무기 탑 10 +3 Lv.17 KaleidoS.. 14.03.02 1,239
213515 문피아를 이용하면서 .. Lv.77 고염 14.03.02 919
213514 온라인으로 보드게임하실 분~ +5 Personacon 별가別歌 14.03.02 1,063
213513 3차대전이 일어난다면 제일 가능성 높은경우가 뭐가 있을... +7 Lv.1 레일즈 14.03.02 1,622
213512 돌아왔습니다. +2 Lv.1 [탈퇴계정] 14.03.02 933
213511 하..이 십x기를 어케 해야될까요.. +1 Lv.12 朴어진 14.03.02 2,126
213510 김동현 선수 멋지네요! +2 Personacon 플라나니아 14.03.02 1,103

신고 사유를 선택하세요.
장난 또는 허위 신고시 불이익을 받을 수 있으며,
작품 신고의 경우 저작권자에게 익명으로 신고 내용이
전달될 수 있습니다.

신고
@genre @title
> @subject @time