일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 스프링
- 구조체배열
- 가상면접사례로배우는대규모시스템설계기초
- thymeleaf
- @Component
- AWS
- OpenCV
- git
- 코테
- 시스템호출
- C언어
- 해시
- TypeORM
- nestjs typeorm
- spring boot
- nestjs auth
- 컴포넌트스캔
- 프로그래머스
- 알고리즘
- 카카오 알고리즘
- 코딩테스트
- C++
- 카카오 코테
- 파이썬
- Spring
- @Autowired
- python
- nestJS
- 카카오
- Nodejs
Archives
- Today
- Total
공부 기록장 💻
명품 C++ Programming 11장 실습 문제 - istream, ostream, cin.ignore(), cin.get(), 포맷 출력, 조작자, 포맷 함수, 사용자 정의 >> << 연산자 본문
# Language & Tools/C++
명품 C++ Programming 11장 실습 문제 - istream, ostream, cin.ignore(), cin.get(), 포맷 출력, 조작자, 포맷 함수, 사용자 정의 >> << 연산자
dream_for 2021. 6. 1. 00:58명품 C++ 프로그래밍 11장
1.
ch=cin.get()
EOF
#include <iostream>
using namespace std;
int main(){
int ch, cnt=0;
while((ch=cin.get())!=EOF){
if(ch=='\n') break;
if(ch=='a') cnt++;
}
cout<<"a의 개수는 "<<cnt<<endl;
}
2.
istream& get(char ch)
cin.get() - cin.eof()
#include <iostream>
using namespace std;
int main(){
char ch;
int cnt=0;
while(true){
cin.get(ch); // istream& get(char ch) 함수 - cin 스트림 객체 버퍼에 입력받은 문자 ch를 저장
if(cin.eof() || ch=='\n')break; // 오류 확인하기 위해 cin 객체에 failbit 확인 -> cin.eof() 함수 사용
if(ch==' ') cnt++;
}
cout<<"공백의 개수는 "<<cnt<<endl;
}
3.
cin.ignore(int n, char ch);
#include <iostream>
using namespace std;
int main(){
int ch;
cin.ignore(100, ';');
// 입력 받는 도중 개행 문자 만나면, ';'를 만날 때까지 리턴
// 알파벳; abc '\n' 안녕;hello
while((ch=cin.get())!=EOF){
cout<<(char)ch;
if(ch=='\n')
cin.ignore(100,';');
}
cout<<endl;
}
4.
cin.ignore()
cout.put()
#include <iostream>
using namespace std;
int main(){
int ch;
// 입력을 받는 도중, ';' 문자를 만나면 개행 문자를 만날 때까지 리턴 + endl 실행
while((ch=cin.get())!=EOF){
if(ch==';'){
cout.put('\n');
cin.ignore(100,'\n');
}
else cout.put(ch);
}
}
5.
string 객체, cin >>
#include <iostream>
using namespace std;
int main(){
string cmd;
while(true){
cout<<"종료하려면 exit을 입력하세요 >> ";
cin>>cmd;
if(cmd=="exit") break;
}
cout<<"프로그램을 종료합니다...."<<endl;
}
getline(cin, s) 전역 함수
#include <iostream>
using namespace std;
int main(){
string cmd;
while(true){
cout<<"종료하려면 exit을 입력하세요 >> ";
getline(cin, cmd);
if(cmd=="exit") break;
}
cout<<"프로그램을 종료합니다...."<<endl;
}
6.
<iomanip> - 조작자 함수
<math.h> - sqrt()
setw(), setfill(), setprecision(), left
#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
int main(){
// 필드 간격 15, 제곱근 유효숫자 3, 빈칸 _ fill
// setw(15), setprecision(3), setfill('_')
cout<<setw(15)<<left<<"Number";
cout<<setw(15)<<left<<"Square";
cout<<setw(15)<<left<<"Square Root"<<endl;
for (int i=0;i<=45;i+=5){
cout<<setw(15)<<setfill('_')<<i;
cout<<setw(15)<<setfill('_')<<i*i;
cout<<setw(15)<<setfill('_')<<setprecision(3)<<sqrt(i)<<endl;
}
}
7.
#include <iostream>
#include <iomanip>
#include <cctype>
using namespace std;
int main(){
for (int i=0;i<4;i++)
cout << "dec" << '\t' << "hexa" << '\t' << "char "<< '\t';
cout<<endl;
for(int i=0;i<12;i++) cout << "____" << '\t';
cout << endl;
for(int i=0;i<128;i++){
cout.width(3); // setw(3) - format 함수 사용
cout << left; // left 조작자함수 사용
cout << dec << i << '\t' << hex << i << '\t' << (isprint(i) ? (char)i : '.') << '\t';
if(i%4==3) // i%4==3 인 경우, 012'3', 456'7' 이 끝난 다음에 줄바꿈
cout << endl;
}
}
8.
istream&, ostream&의 << , >> 연산자 중복 정의하기
#include <iostream>
using namespace std;
class Circle{
string name;
int radius;
public:
Circle(int radius=1, string name=""){
this->radius=radius;
this->name=name;
}
friend istream& operator >> (istream& ins, Circle& c);
friend ostream& operator << (ostream& outs, Circle c);
};
istream& operator >> (istream& ins, Circle& c){
string name;
cout << "반지름 >> ";
ins >> c.radius;
cout << "이름 >> ";
ins >> c.name;
return ins;
}
ostream& operator << (ostream& outs, Circle c){
outs << "(반지름" << c.radius << "인 " << c.name << ")";
return outs;
}
int main(){
Circle d, w;
cin >> d >> w; // 반지름과 이름 입력 받음
cout << d << w << endl; // (반지름r인 이름) 객체 출력
}
9.
사용자 정의 << , >> 연산자 만들기
getline() 전역 함수
#include <iostream>
using namespace std;
class Phone{
string name, telnum, address;
public:
Phone(string name="", string telnum="", string address=""){
this->name=name;
this->telnum=telnum;
this->address=address;
}
friend istream& operator >> (istream& ins, Phone& p);
friend ostream& operator << (ostream& outs, Phone p);
};
istream& operator >> (istream& ins, Phone& p){
cout<<"이름:";
getline(ins, p.name);
cout<<"전화번호:";
getline(ins, p.telnum);
cout<<"주소:";
getline(ins, p.address);
return ins;
}
ostream& operator << (ostream& outs, Phone p){
outs << "(" << p.name << "," << p.telnum << "," << p.address << ")";
return outs;
}
int main(){
Phone girl, boy;
cin >> girl >> boy;
cout << girl << endl << boy << endl;
}
10.
#include <iostream>
using namespace std;
istream& prompt(istream& ins){
cout << "암호?";
return ins;
}
int main(){
string password;
while(true){
cin >> prompt >> password;
if(password == "C++") {
cout << "login success !! " << endl;
break;
}
else cout << "login fail. try again !! " << endl;
}
}
11.
#include <iostream>
using namespace std;
istream& pos(istream& ins){
cout<<"위치는? ";
return ins;
}
int main(){
int x, y;
cin >> pos >> x;
cin >> pos >> y;
cout << x << ',' << y << endl;
}
728x90
반응형
'# Language & Tools > C++' 카테고리의 다른 글
Comments