WHOIS 기록 파일을 읽습니다. 샘플 파일의 첫 번째 줄은 편집기에서 읽습니다 : "ID : 0--0.ga는"ifstream read : 여분의 바이트는 어디서 오는가?
코드에서, 내가 첫 번째 줄로 시작하는지 확인하기 위해 확인 "ID :"다음과 같이
나는이 작업을 수행 할 때// given ifstream * fs,
char id[3];
streampos pos = fs-> tellg();
fs -> read(&id[0],3);
fs -> seekg(pos);
if (// id[3] is "id:" ...
, (내가 디버거를 실행하고, 더 나아가 오히려 GCC보다는 그 소리로 컴파일), 나는 id
에서 다음과 같은 결과를 얻을 :
문자가 읽기 , 'i', 'd'및 ':'이외에 :
\xb87#_?
여기서 물음표 앞에는 정지 기호가 있습니다. 나는 적절한 길이의 배열로 3 바이트를 읽는 동안 "여분의"것을 읽는 방법을 확신 할 수 없다.
또한 if 문은 true로 평가된다.
이 오류는 코딩 실수 일 수도 있고 디버거 오류 일 수도 있고 다른 일이있을 수 있습니까?
nope - 디버거가 첫 번째 null까지 문자열을 표시합니다. ID 4 바이트를 만들고 id [3]을 \ 0 – pm100
@ pm100으로 설정해야합니다. 감사합니다. – bordeo
@ pm100 당신은 몇 가지 upvotes가 나타납니다. 왜 누군가가 이유를 설명하고 대답을 받아들이 길 원한다면 몇 분 동안 떠납니다. 그렇지 않으면 삭제할 것입니다. – bordeo