'cout'에 해당되는 글 1건

  1. 2012.10.24 스트림 - 표준입출력(cout, cin)

스트림

입력과 출력을 위한 바이트들의 스트림

프로그램과 입력장치, 혹은 프로그램과 출력장치 사이의 매개체 역할을 한다.

표준화된 인터페이스를 제공함으로써, 입력 및 출력 장치의 종류에 상관없이 동일한 처리 방법을 제공한다.


입력스트림 Ex) Keyboard, Camera, File...

출력스트림 Ex) Monitor, File, Print


스트림 클래스 계층구조


표준입출력

표준입력 : stdin.cin 

- 스트림 상태를 나타내는값

 class ios {

          // ...

public:

          enum io_state {

              goodbit =0,

              eofbit  =1,

              failbit =2,

              badbit  =4,

          };

          int eof() const;     // end of file seen

          int fail() const;    // next operation will fail

          int bad() const;      // stream corrupted

          int good() const;     // next operation might succeed};

get() : 단일문자 입력함수

getline()

istream& getline(char*, int, char='\n');

1번째 인자는 입력 문자열을 저장한 공간이며, 2번째 전달인자는 읽어들일 문자의수, 3번째 전달인자는 종료문자로 종료문자를 만나게 되면 지정된 개수의 문자를 읽기 전이라도 입력을 멈춘다.

ignore() : 문자열을 읽고 나서, 읽은 문자열을 버린다.

read() : 주어진 수의 바이트를 읽어서 지정된위치에 저장, 입력에 널문자는 붙이지 않는다.

peek() : 입력스트림으로부터 추출하는 일 없이 입력에 있는 다음문자를 반환

gcount() : 마지막 추출 맴버함수가 읽는 문자수를 반환

putback() : 어떤문자를 입력스트림에 다시 넣는다.


 const int MAXLEN = 255;

int main(void)

{

         char input[MAXLEN];

         cout << "[getline() 함수]" << endl;

         cout << "주소를입력하여주십시오:  ";

         cin.getline(input, MAXLEN, '\n');  //종료문자열인'\n'을만날때까지문자열을읽어드림

         cout << "ECHO : " << input << endl;

 

         cout << "[get() 함수]" << endl;

         cout << "전화번호를입력하여주십시오: ";

 

         char ch;

         cin.get(ch);      //단일문자열

         cout << "ECHO : ";

         while (ch != '\n'){

                  cout << ch;

                  cin.get(ch);

         }

         cout << endl;

         return 0;

}


int main(void)

{

         cout << "[peek() 함수]" << endl;

         cout << "주소를입력하여주십시오:  "

         //주소입력: xxxx@ 102307=> 아파트를의미하는@문자를'아파트'로출력한다.

         char ch;

         while (cin.peek() != '\n'){

                  cin.get(ch);

                  if (ch == '@'){  

                           cin.putback(' ');  

                           cout << "아파트";

                  }

                  else

                           cout << ch;

         }

         cout << "\n[read() 함수]" << endl;

         cout << "전화번호를입력하여주십시오:  "

         cout.flush();

 

         char input[5];

         cin.read(input, 5);

         input[5] = '\0';

         cout << input << endl;

         return 0;

}




표준출력 : stdout.cout 

※ cout 객체를 이용하여 출력

int main(void)

{

         char* name = "My name is Hong.";

         for (int i=0; i< (int)strlen(name); i++)

                  cout.put(name[i]).put('.');

         cout << endl;

         cout.write(name,strlen(name)).write("\n",1);

         return 0;

}

put() : 단일문자 출력함수, 연속출력이 가능하다.

write() : 전체 문자열을 출력한다.


※ 출력형식지정

width() : 출력시 폭을 지정, 바로 다음 출력되는 항목에만 영향을 준다

hex(), doc(), oct() : 16. 10. 8진법을 선택

precision : 부동 소수점의 출력시 정밀도를 설정

 class ios {

  // …

public :

  ostream* tie(ostream* s);  // tie input to output

  ostream* tie();  // return “tie”

  int width(int w);  // set field width

  int width() const;

  char fill(char);  // set fill character

  char fill() const;  // return fill character

  long flags(long f);

  long flags() const;

  long setf(long setbits, long field);

  long setf(long);

  long unsetf(long);

  int precision(int);  // set floating point precision

  int precision() const;

};


예제)

int main(void)

{

         int iarr[5] = {10, 5, 105, 32, 6547};

         double darr[5] = {10.1, 10.525, 10.23456, 10, 10.32};

         int i;

 

         cout << "[정수의출력]" << endl;   

         cout.width(15); cout << "10진수"// 출력시필드의폭을지정

         cout.width(15); cout << "16진수";

         cout.width(15); cout << "8진수" << endl;

 

         for (i=0; i<5; i++){

                  cout.width(15); cout << dec << iarr[i] << " ";       //10진수

                  cout.width(15); cout << hex << iarr[i] << " ";       //16진수

                  cout.width(15); cout << oct << iarr[i] << endl;      //8진수

         }

 

         cout << "\n[부동소수점수의출력]" << endl;

         cout.width(15); cout << "precision(2)";                      

         cout.width(15); cout << "precision(5)" << endl;     

 

         for (i=0; i<5; i++){

                  cout.precision(2);                 //정밀도의자리수: 2

                  cout.width(15); cout << darr[i];

                  cout.precision(5);                 //정밀도의자리수: 5

                  cout.width(15); cout << darr[i] << endl;

         }

         cout << endl;

 

         return 0;

}



표준 에러출력 : stderr.cerr 

※ 모든 Built-in타입에 대해 "<<" 연산자 오버로딩 되어있다.


'Developer > C / C++' 카테고리의 다른 글

Namespace  (0) 2012.10.24
스트림 - 파일 I/O  (0) 2012.10.24
예외처리  (0) 2012.10.24
STL(Standard Template Library) for C++  (0) 2012.10.23
템플릿 (클래스 템플릿, 함수 템플릿)  (0) 2012.10.23
Posted by No names
,