<cin> : 문자와 문자열 모두 입력 받을 수 있다. cin>>a; //1
- 엔터가 나오면 입력종료로 간주.(공백도 마찬가지)
#include <iostream>
void main()
{
char a, b;
char str[10];
cout<<a<<endl; //2
cin>>a; //3
cin>>b; //4
cout<<a<<" "<<b<<endl; //5
cin>>str; //6
cout<<str<<endl;; //7
}
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
}
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()을 하나 더 삽입하면 된다.
파일에서 읽어들여 올때.. 간단한 사용법 input_file->get(c); while ( input_file->get(c) )
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;
while (!input_file->eof())
{
cout<<c;
input_file->get(c);
}
}
//or ... 이게 제일 편한 방법인듯.
read ( ifstream *input_file )
{
char c;
cout<<c;
}
<getline> : getline()은 문자열만 입력 받는다.
getline(변수의 주소, 최대입력가능 문자수, 종결문자);
-getline()gkatnsms Enter키가 전달하는 개행문자를 입력의 끝으로 인식하여 한줄 전체를 읽는다.
-종결문자 생략시 엔터로 간주된다. 그리고 종결문자를 NULL문자로 바꾼다. 따라서 종결문자전까지 출력하게 된다.
최대입력가능 문자수보다 많은 문자를 입력한 경우 n-1개만큼만 받아들이고 n번째 문자는 null문자로 취급한다.
-cin.getline(a,20); //이때 입력한 문자의 개수는 19개이하이여야 한다.(마지막 1문자는 null문자 삽입)
cin.getline(a, 10, 'u'); //3 }
#include<iostream>
void main()
{
char a[10];
cin.getline(a,10); //1
cout<<a<<endl; //2
cout<<a<<endl; //4
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);
}
}
'Language > C++' 카테고리의 다른 글
[c++] 레퍼런스, reference, int &ref = val; 레퍼런스 변수, 별명! (0) | 2014.06.17 |
---|---|
포인터의 용도 / 동적할당메모리 (0) | 2013.04.29 |
C++ Preprocessor: Always Assert Your Code Is Right (0) | 2011.03.25 |
ostream/istream (0) | 2011.03.14 |
연산자 오버로딩 (0) | 2011.03.14 |