Wednesday, September 5, 2012

표준 입/출력의 스트림;흐름(Standard Input and Output Streams)

현재까지 출력은 모두 콘솔 윈도우에서 표기 되었습니다. 실제로 대다수의 프로그램이 이러한 방식으로 결과를 출력 합니다만 실제로는 표준 출력 스트림(역자 주 : 흐름으로 번역 할까 했습니다만 실제로는 한글 발음 그대로 스트림이라고 쓰는 경우가 많습니다.)이 프로그램에서 출력 되는 것입니다.

표준 출력은 문자(문장이 아니라)를 기준으로 합니다; 모든 프로그램에서의 출력물은 전부 대표 문자로 변경 된 뒤에 문자 하나하나가 출력으로 전송됩니다. 예를 들면 앞에서 출력 해 보았듯이 정수 100을 출력 한다면 100이라는 하나의 값으로 전송 되는 것이 아니라 세개의 문자 1, 0, 그리고 0의 꼴로 전송됩니다.

이와 유사하게 우리가 키보드라고 인지 하는 것은 실제로는 표준 입력 스트림이라고 볼 수 있으며 역시 문자를 기반으로 하고 있습니다. 모든 정보는 키보드에서 문자로라는 형태에서 데이터로 변경됩니다. 예를 들면 42라는 정수 값은 실제로 4와 2라는 표준 입력의 형태로 볼 수 있습니다.

이러한 변환들은 자동적으로 이루어 집니다.

이러한 연속된 문자들의 집합 개념은 문자 스트림이라고 불립니다. D언어의 표준 입/출력 또한 같은 개념으로 생각하시면 됩니다. 즉 D언어 또한 문자 스트림을 주고 받습니다.

D언어에서의 표준 입/출력 스트림은 각각 stdin, stdout라는 이름을 가집니다.

이러한 스트림을 사용한 연산은 기본적으로 스트림의 이름과 점과 그리고 연산으로 이루어 져 있습니다;예를 들면 stream.operation()과 같습니다. 이름 stdin, stdout는 아주 자주 쓰이기 때문에 편의상 이름이나 점 필요 없이 operation()의 꼴로 호출 할 수도 있습니다. 

우리가 앞에서 쭉 써왔던 writeln연산 또한 실제로는 stdout.writeln입니다.  같은 방식의 write또한 stdout.write의 약자 입니다. 따라서 hello world프로그램 또한 다음과 같이 바꿔 쓸수 있습니다.
import std.stdio;

void main()
{
    stdout.writeln("Hello world!");
}

연습문제

  • stdout.write write와 같은 결과를 보여 준다는 것을 직접 확인 해 봅시다.

No comments:

Post a Comment