2020년 7월 1일 수요일

txt 파일에서 int 읽을 때 주의

는 나만 착각할거 같은데

txt 파일의 1, 2, 3 은 모두 char 형이거나 wchar 같은 것이다.

파일의 123은 1, 2, 3 이라는 글자가 있는 거지 숫자 123이 아니다.

하지만 정수인 123을 저장하는 방법이 있는데 그게 강제 형변환으로 저장하는 것이다.

그 두가지의 차이를 깜빡하고 텍스트의 123을 정수 자체로 읽으면서 왜 안되지 하고 있으면 안되는 것이다.

또 다른 방법이 있는데 >> 연산자를 활용하면 알아서 글자의 나열에 불과한 숫자를 하나의 숫자로 변환해준다.

아래는 정수 자체로 읽는 2가지 방법이다.

1

2

3

4

5

6

7

8

std::ifstream input;// ("option.txt");

input.open("option.txt");

input.read(reinterpret_cast<char*>(&delay), i);

input >> delay; // 편하게 하는 방법, 단순한 숫자의 나열을 유지해서 txt 파일에서도 읽을 수 있다.

printf("\n%d %d", i, delay);

input.close();

//input.read(reinterpret_cast<char*>(&delay), sizeof(int));

// 통째로 저장하는 법, 읽기도 똑같은 방법으로 해야한다. txt 파일에서 읽으면 당연히 깨져있다.

댓글 없음:

댓글 쓰기

List