2011. 4. 3. 23:43

<cin> : 문자와 문자열 모두 입력 받을 수 있다.
- 엔터가 나오면 입력종료로 간주.(공백도 마찬가지)

#include <iostream>
void main()
{
 char a, b;
 char str[10];

 cin>>a;  //1
 cout<<a<<endl;  //2


 cin>>a;   //3
 cin>>b;   //4
 cout<<a<<" "<<b<<endl; //5


 cin>>str; //6
 cout<<str<<endl;; //7
 
}

1번에서 p를 입력하고 엔터
2번 출력 결과 => p

3,4번에서,
x입력후 엔터, y입력후 엔터
5번 출력 결과 => x y


6번에서 loving you 엔터
7번에서 출력 결과 =>loving



<get> : get()은 문자만 입력받을 수 있다.

- 이 함수는 개행문자를 입력 큐에 그대로 남겨둔다.

 #include <iostream.h>
void main()
{
 char a, b, c;
 a = cin.get(); //cin.get(a) 가능
 b = cin.get();
 c = cin.get(); //1
 cout<<a<<" "<<b<<" "<< c<<endl; //2
}

1번까지
x입력후 엔터, y입력후 엔터
[2번 출력 결과]
x
y
-즉 엔터도 입력받을 문자로 간주한것으로 볼 수 있습니다.(공백또한 문자로 간주)
x + Enter(개행) + y

cf)cin은 엔터가 나오면 입력 종료로 간주.


cf)getline와 get함수가 다른 점은 get함수는 개행문자를 읽어서 버리지 않고 입력큐에 그대로 남겨둔다는 점이다.

즉, cin.get(str1, hi);
    cin.get(str2, hello);
라는 두 문장이 있다면 입력큐에 개행문자가 그대로 있어서 두번째 호출은 개행문자를 첫 문자로 만나게 된다.
굳이 get()을 써야 한다면,
 cin.get(str1, hi);
 cin.get();
 cin.get(str2, hello);
이렇게 두 문장사이에 get()을 하나 더 삽입하면 된다.

파일에서 읽어들여 올때.. 간단한 사용법

 read ( ifstream  *input_file )
{
 char c;
 while (1)
 {
  input_file->get(c);
  if ( input_file->eof() )
   break;
  else
   cout<<c;
 }
}
 //or
read ( ifstream *input_file )
{
 char c;

 input_file->get(c);
 while (!input_file->eof())
 {
  cout<<c;
  input_file->get(c);
 }
}

 //or ... 이게 제일 편한 방법인듯.
read ( ifstream *input_file )
{
 char c;

 while ( input_file->get(c) )
  cout<<c;
}


 

<getline> : getline()은 문자열만 입력 받는다.
getline(변수의 주소, 최대입력가능 문자수, 종결문자);
-getline()gkatnsms Enter키가 전달하는 개행문자를 입력의 끝으로 인식하여 한줄 전체를 읽는다.
-종결문자 생략시 엔터로 간주된다. 그리고 종결문자를 NULL문자로 바꾼다. 따라서 종결문자전까지 출력하게 된다.
최대입력가능 문자수보다 많은 문자를 입력한 경우 n-1개만큼만 받아들이고 n번째 문자는 null문자로 취급한다.
-cin.getline(a,20); //이때 입력한 문자의 개수는 19개이하이여야 한다.(마지막 1문자는 null문자 삽입)

 #include<iostream>
void main()

{
 char a[10];
 cin.getline(a,10); //1
 cout<<a<<endl;  //2

 cin.getline(a, 10, 'u'); //3
 cout<<a<<endl;  //4

}

1번에서 so cute! 입력후 엔터
2번 결과 => so cute!
cf)cin의 경우 공백이 나오면 입력이 끝났다고 간주, but getline은 공백(ascii 32)도 문자로 받아들임

3번에서 so cute! 입력후 엔터
4번 결과 => so c


 

파일에서 읽어올 경우.. infile->getline(이 위치로, 문자수, 종결문자) 형식.
read(ifstream  *infile) 
{

 SMS S;
 while(!infile->eof())
 { 
  infile->getline(S.phone,21,'\n');
  infile->getline(S.msg, 97,'\n');
  S.time = currentTime();
  insert(S);
 }
}

Posted by Triany