Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

닷넷!시작하기

Microsoft. NET 을 시작하는 분들을 위한 강좌입니다. 주로 기초적인 내용과 때론 기본적인 내용을 다룹니다

Console 클래스(기본 입/출력 연산)

작성자 : 박종명
최초 작성일 : 2008-07-04 (금요일)
최종 수정일 : 2008-07-04 (금요일)
조회 수 : 5293

* Console 클래스(기본 입/출력 연산)

C#을 통한 명령기반 기본 입/출력 연산에 대해 알아보도록 하겠습니다.

앞서 Hello World 샘플에서 다음과 같이 콘솔 창에 값을 출력하였습니다.

namespace System

{

    public static class Console

    {

System.Console.WriteLine("Hello World!");  

}

}

Console 클래스의 WriteLine 메서드를 통해 콘솔 창에 ‘Hello World!’라는 문자열을 출력하고 있습니다.

 

= Console 클래스

Console 클래스는 쉽게 말해 콘솔 ()을 추상화한 클래스입니다

추상화라는 말이 아직 안 와 닿는다면 그냥 Console창을 표현하는 클래스라고 생각하기 바랍니다.

이 클래스를 통해 콘솔 창에 대한 표준 입/출력 및 오류 스트림에 액세스 할 수 있습니다.

다시 말해 콘솔 창으로의 입력 값을 받아 올 수 있고 출력 값을 내 보낼 수 있다는 예기입니다

 

msdn에서는 콘솔Console 클래스를 다음과 같이 정의하고 있습니다.

콘솔은 사용자가 컴퓨터 키보드를 통해 텍스트를 입력하거나 컴퓨터 터미널에서 텍스트 출력을 읽어 운영 체제 또는 텍스트 기반 콘솔 응용 프로그램과 상호 작용하는 운영 체제 창입니다. 예를 들어, Windows에서는 콘솔을 명령 프롬프트 창이라고 하며 MS-DOS 명령을 받습니다. Console 클래스는 응용 프로그램에 콘솔에서 문자를 읽고, 콘솔에 문자를 쓰는 기본 기능을 제공합니다.

 

참고로 Console 클래스를 통한 입/출력은 콘솔 응용프로그램에서만 의미가 있습니다.

Command 창에서 실행되는 응용프로그램에서만 입/출력이 의미를 가진다는 말입니다.

즉 웹 응용프로그램이나 윈도우 응용프로그램에서는 사용해 봐야 별 의미가 없습니다.

 

= 출력 (Write / WriteLine)

콘솔로 출력하기 위해 Console 클래스에서는 Write WriteLine 두 메서드를 제공합니다.

이 메서드들은 static로 정의되어 있기 때문에 Console 객체 생성 없이 바로 클래스 명으로 접근할 수 있습니다
두 메서드 모두 많은 오버로딩이 존재하지만 여기서는 주로 사용되는 것만 살펴 보도록 하겠습니다.

 

- Write 메서드

Write 메서드는 string(문자열) Char, Char[] (Char배열)을 매개변수로 전달받아서 화면에 출력해 줍니다.
다음의 코드는 콘솔 화면에 ‘ABGDE’를 출력하는 샘플입니다

static void Main()

{

     //문자열 출력

    System.Console.Write("AB");

 

    //문자출력

    System.Console.Write('C');

 

    //문자배열 출력

    char[] chars = new char[] { 'D', 'E' };

    System.Console.Write(chars);}

 

- WriteLine 메서드

그리고 WriteLine 메서드는 역시 Write와 동일하지만 줄 바꿈 문자가 추가 된다는 특징이 있습니다.

즉 출력하는 문자열 끝에 feed carriage return을 추가함으로써 줄 바꿈이 일어 납니다.

아래 결과 화면은 위 샘플코드를 Write WriteLine로 했을 때의 두 결과 화면입니다.

- 샘플 실행 결과

1) Write 를 사용할 경우

 

2) WriteLine 를 사용할 경우

 

 

= 입력 (Read / ReadLine)

출력을 위해 Write/WriteLine 가 있듯이 입력을 위한 Read/ReadLine 이 있습니다.

이 두 메서드를 이용하여 콘솔 창으로 입력되는 값을 응용프로그램에서 읽어 들일 수 있습니다.

 

이 메서드들 역시 static으로 정의되어 있으므로 클래스 명을 통해 직접 접근 가능합니다.

 

- Read 메서드

Read 메서드는 입력 스트림으로부터 하나의 문자를 읽어 들입니다

이 메서드는 반환 타입이 int(정수)이다. 즉 문자의 ASCII 코드를 반환합니다(한글의 경우 유니코드를 반환)

다음의 예제를 살펴 보겠습니다

static void Main()

{

    int inputValue = Console.Read();           

    Console.WriteLine(inputValue);                                  

}

결과는 다음과 같습니다

Console.Read 메서드를 통해 문자 ‘a’ASCII 코드인 97을 반환받았습니다.
 

그렇다면 ASCII 에 정의되어 있지 않은 한글로 입력한다면 어떻게 될까요??


을 입력하였더니 ‘48249’ 가 나왔습니다. 이 숫자는 에 해당하는 유니코드 입니다.

로 시작하는 유니코드는 다음과 같습니다.

48148 ~ 48175
바박밖밗반밙밚받발밝밞밟밠밡밢밣밤밥밦밧밨방밪밫밬밭밮밯

다음이니까 48149입니다.

 

이 숫자는 컴퓨터는 유요한 문자로 처리하지만 우리들이 보기에는 무의미할 수도 있겠죠.

따라서 Read 로 반환 받은 정수형 (문자)코드를 다시 문자로 변환시켜 주면 콘솔 창에 문자로 표현할 수 있습니다.

static void Main()

{

    int inputValue = Console.Read();

    char inputChar = Convert.ToChar(inputValue);

    Console.WriteLine(inputChar);                                  

}

Convert.ToChar() 메서드를 통해 입력 받은 정수 (문자) 코드를 문자로 변환합니다.

그러면 다음 결과화면처럼 우리가 읽을 수 있는 문자로 표시됩니다.

 

Read 메서드는 한 문자만 읽어 들일 수 있다고 하였는데, 만일 여러 문자를 입력하면 어떻게 될까요?

다음의 결과를 보겠습니다.


박종명이라고 입력했지만 읽어 들인 문자는 오직 한 글자뿐이네요.

 

만일 박종명이라는 문자열 전체를 읽어 들이고 싶을 경우에는 어떻게 해야 될까요?

그럴 경우 사용할 수 있는 것이 바로 ReadLine 메서드 입니다.

 

- ReadLine 메서드

Read 메서드는 입력스트림에서 한 문자를 읽어오는 반면 ReadLine 메서드는 한 라인을 읽어 들일 수 있습니다.
또한 Read 메서드가 입력 문자에 대한 정수 코드를 반환하지만 ReadLine 메서드는
문자열(string type)을 반환합니다. 다음은 ReadLine으로 한 라인의 모든 문자를 읽어 들여 콘솔에 출력하는 샘플입니다

static void Main()

{

    string inputString = Console.ReadLine();

    Console.WriteLine(inputString);                                   

}



- Read 메서드를 통해 여러 문자 입력 받기

앞의 예제처럼 문자열 전체를 읽어 들이기 위해 꼭 ReadLine 을 사용해야 되는 것은 아닙니다.

Read 메서드로도 한 문자가 아닌 문자열을 읽어 들일 수 있습니다.


Read
메서드는 한 문자를 읽는다고 표현했는데, 더 정확히 말 하자면 다음의 한 문자를 읽는 것입니다.
즉 콘솔 창으로부터 전달 받은 입력 값에서 제일 처음 한 문자를 읽고 이후 또 다시 Read 메서드가 호출되면 다음 문자를 읽는 방식입니다. 그리고 최종적으로
다음 문자가 없을 경우 -1 을 반환하게 됩니다.

이런 원리에 입각하여 아래처럼 코드를 작성하면 Read 메서드로도 문자열 전체를 입력 받을 수 있게 됩니다.

static void Main(string[] args)

{

    int inputValue = 0;

    while ((inputValue = Console.Read()) != -1)

    {              

        char c = Convert.ToChar(inputValue);

        Console.Write(c);

    }          

}

코드를 간략히 설명하자면,

읽어 들일 문자가 더 이상 없을 경우 반환되는 -1 값이 나올 때까지 반복문을 돌려서 한 문자씩 순차적으로 읽어 들여 콘솔 창에 출력(Write) 합니다.

 

= 기타

지금까지 콘솔을 통한 입/출력 방법에 대해 알아 보았습니다.

Console 클래스는 이 외에도 많은 static 속성과 메서드를 제공합니다. 그러나 모두 알 필요는 없습니다.
, 콘솔 기반의 복잡하고 풍부한 기능의 응용프로그램을 제작해야 한다면 지금까지 알아본 것 이외의 기능들도
면밀히 학습을 하야 합니다.
정리하게 전에 Console 클래스의 몇 가지 속성,메서드를 살펴보고 글을 마무리 하도록
하겠습니다.

 

- Title 속성

.NET Framework 2.0 을 사용할 경우 Console 클래스의 Title 속성을 이용할 수 있습니다.

이는 콘솔 창의 제목을 가져오거나 변경할 수 있는 static 속성입니다.

참고로 Title 로 콘솔 창의 제목을 변경 할 경우 문자 길이가 24500 자 까지만 가능합니다

static void Main(string[] args)

{

Console.WriteLine("Title 변경 전...");         

    Console.WriteLine(Console.Title);

 

    Console.WriteLine("\nTitle 변경 후...");         

    Console.Title = "안녕하세요. 콘솔 클래스의 이모저모를 살펴 보고 있어요~~";

    Console.WriteLine(Console.Title);

}

 

- CapsLock 속성

사용자의 컴퓨터에 ‘Caps Lock’ 키가 눌러져 있는지 여부 true/false 로 반환하는 속성입니다.

/소문자를 구분하는 입력을 받아야 할 경우 유용한 속성이 될 것입니다.

(.NET Framework 2.0에 새롭게 추가된 속성입니다.)

 

- BackgroundColor 속성

콘솔의 배경색을 설정하거나 현재 배경색을 가져올 수 있는 속성입니다.

다음은 이 속성을 이용하여 배경색을 빨간색으로 설정한 샘플입니다.

(.NET Framework 2.0에 새롭게 추가된 속성입니다.)

 

static void Main(string[] args)

{

Console.BackgroundColor = ConsoleColor.Red;

    Console.ReadLine();

}

 

- Beep 메서드

하는 경고음을 콘솔 스피커를 통해 재생하는 메서드 입니다.

단순히 Console.Beep() 라고 하면 짧은 비프음이 발생합니다.

만일 경고음의 재생 시간을 늘리고 싶거나 재생 음을 달리 하고 싶다면 다음과 같이 매개변수가 있는 Beep 메서드를 이용하면 됩니다.

: Console.Beep(재생음 주파수 정수값, 재생 지속 시간 정수 값)

 

이과 관련해 MSDN에서는 Beep 메서드를 이용한 노래 연주 샘플을 제공합니다.

다음의 주소에서 해당 샘플을 실행시켜 보면 떳다!떳다! 비행기.. 날아라. 날아라..’ 라는 노래의 음이 재생됩니다.

 

 

 

 

 

이름
비밀번호
홈페이지
MG <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요