SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
10. 문자열클래스와파일클래스
차례
•
•
•
•
•
•

문자열 객체 생성
파일 객체 생성
출력형식 지정자
fstream 클래스
이진 파일의 입출력
임의 접근 파일

2/28
C++ 라이브러리에서 제공하는 클래스
• 자주 사용하는 객체에 대한 클래스에 대해 C++ 라이브
러리에서 미리 정의해 놓았다!!
• 문자열 처리를 담당하는 string 클래스
• 파일 처리를 담당하는 fstream 클래스

• 클래스 정보를 담은 헤더파일을 포함하고 사용해야 함

3/28
STRING
• string
• 문자열 클래스
• 멤버 변수와 멤버 함수가 이미 정의되어 있음

• 문자열 객체 생성하기
string s_name; //객체 s_name 이 생성
string s_name(“김갑순”); //객체 s_name 을 생성하면서 문자열을
매개변수로 하는 생성자 호출
string s_name=“김갑순”;
4/28
소스 10-1 (CH10_01.CPP)
#include <iostream>
#include <string> //문자열 클래스 사용을 위해 포함
using namespace std;
int main()
{
string s_name; //스트링 클래스의 객체 생성
s_name="문자열"; //대입문으로 직접 문자열 할당 가능
cout << s_name << endl;
cout <<"문자열 길이 : " << s_name.length() << endl;
s_name=s_name+"클래스"; //문자열 연산자 사용 가능
//s_name.append("클래스");
cout << s_name << endl;
cout <<"문자열 길이 : " << s_name.length() << endl;
}

return 0;
5/28
문자열 클래스 생성자
• 생성자
함수 형태

의미와 예

string ( )

빈 문자열 객체를 생성
string str1;

string (문자열객체)

객체를 생성하고 생성자에 문자열 객체를 전달
string name(str1); //str1은 이미 생성된 문자열 객체

string (char *)

객체를 생성하고 생성자에 문자열을 전달
char s[10]=“Computer”;
string str2(s);

string (개수, 문자)

객체를 생성하고 개수와 문자를 전달, 문자를 해당 개수만
큼 갖는 문자열 객체 생성
string str3(5, ‘A’);

• 소스 10-2 (ch10_02.cpp)
6/28
문자열 클래스 APPEND 함수
• 문자열 추가 함수
함수 형태

의미와 예

append(문자열)

객체에 전달한 매개변수인 문자열을 덧붙인다.
string newStr=“Computer”;
newStr.append(“Science”);
//”ComputerScience”

append(문자열, 시작위치, 개수)

객체에 전달한 문자열에서 시작위치에서 개수만큼의
문자열을 덧붙인다.
string newStr;
newStr.append(“ComputerScience”, 0, 8);
“Computer”

append(개수, 문자)

객체에 지정한 개수만큼 해당 문자를 덧붙인다.
string newStr=“Computer”;
newStr.append(3, ‘!’); //”Computer!!!”

• 소스 10-3 (ch10_03.cpp)
7/28
문자열 클래스 ASSIGN 함수
• 문자열 추가 함수
함수 형태

의미와 예

assign(문자열)

객체에 전달한 매개변수인 문자열로 초기화된다.
string newStr=“Computer”;
newStr.assign(“Science”); //”Science”

assign(문자열, 시작위치, 개수)
assign(문자열, 개수)

객체에 전달한 문자열에서 시작위치에서 개수만큼의
문자열로 초기화된다.
string newStr;
newStr.assign(“ComputerScience”, 8, 7);
//“Science”
newStr.assign(“ComputerScience”, 8);
//“Computer”

assign(개수, 문자)

객체에 지정한 개수만큼 해당 문자를 덧붙인다.
string newStr=“Computer”;
newStr.assign(3, ‘!’); //”!!!”

• 소스 10-4 (ch10_04.cpp)
8/28
문자열 멤버 함수 : AT(), LENGTH(), SIZE(),
CLEAR(), ERASE()
함수 형태

의미와 예

at(위치)

문자열 객체에서 지정한 위치의 문자를 반환한다. 문자
위치는 0부터 시작한다.
string newStr=“Computer”;
char rChar=newStr.at(0); //’C’

length(), size()

문자열 객체에 저장한 문자열 길이를 반환한다.
string newStr=“Programming”;
int LenString=newStr.length(); //11

clear(), erase(위치, 개수)

clear() : 객체를 빈 문자열로 초기화
erase(위치, 개수) : 지정된 위치부터 해당 개수만큼 문
자를 삭제함
string newStr=“Computer”;
newStr.erase(6,2); //”Comput”
newStr.clear(); //문자열이 모두 삭제됨

• 소스 10-5 (ch10_05.cpp)

9/28
문자열 멤버 함수 : EMPTY(), SUBSTR(),
SWAP()
함수 형태
empty()

의미와 예
문자열 객체가 아무 내용도 저장하고 있지 않으면 true,
아니면 false를 반환한다.
string newStr=“Computer”;
newStr.empty(); // true 반환
문자열 객체의 지정한 위치에서 해당 개수만큼의 문
자로 이루어진 문자열을 반환한다.

substr(위치, 개수)

string newStr="ComputerScience";

newStr.substr(0, 8); //0번째부터 8번째까지의 문자
모음인 "Computer"가 반환됨
swap(문자열)

전달받은 매개변수인 문자열 객체로 교환한다.
string newStr1 ("Computer), newStr2("Science");
newStr1.swap(newStr2); //newStr1과 newStr2의 값
이 서로 교환된다.

• 소스 10-6 (ch10_06.cpp)

10/28
문자열 멤버 함수 : FIND(), REPLACE()
함수 형태
find(문자)
find(문자, 시작위치)

의미와 예
문자열 객체에서 지정한 문자를 0번째 부터 찾아서 그 위치를 반환
string newStr="ComputerScience";
newStr.find('e'); //문자는 0번째부터 위치를 표시, 따라서 6을 반환함
newStr.find('e', 8); //8번째 이후 문자 'e'는 11번째에 있으므로 11을 반
환함

문자열 객체에서 지정한 문자열을 0번째부터 찾아서 그 위치를 반환
string newStr="Test1Test2Test3Test4", newStr2="Test";
find(문자열)
newStr.find(newStr2); //0번째부터 문자열 newStr2를 찾아서 0을 반환
find(문자,열 시작위치)
newStr.find(newStr2, 5); //5번째 위치부터 문자열 newStr2의 위치를
찾아서 반환함
swap(문자열)

문자열 객체의 해당 위치에서 매개변수로 전달한 문자열로 개수만큼의
문자로 변경
string newStr1 ("Computer), newStr2("Science");
newStr1.replace(0, 2, newStr2) // newStr1이 "Scmputer"로 변경

• 소스 10-7 (ch10_07.cpp)

11/28
문자열 멤버 함수 : COMPARE(), INSERT()

함수 형태
compare(문자열)
compare(시작위치, 개수, 문자열)

insert(시작위치, 문자열)
insert(시작위치, 개수, 문자)

의미와 예
문자열 객체와 매개변수 문자열 객체와 같은가를 비교한다. 만약 기
준 문자열이 크면 1, 매개변수 문자열이 크면 -1, 같으면 0을 반환
string Str1=“Computer”, Str2=“Science”;
Str1.compare(Str2); //-1을 반환

문자열 객체에서 지정한 문자열을 지정한 위치에 삽입해서
반환한다.
string str1="AAAA", str2="BBBB";
str1.insert(0, str2); // str1이 "BBBBAAAA"으로 갱신됨
str1.insert(4, 3, 'C'); //str1이 'C'를 세 개 삽입해서
"BBBBCCCAAAA"으로 갱신됨

• 소스 10-8 (ch10_08.cpp)
12/28
문자열 클래스 연산자
• 문자열 클래스는 연산자를 이용해서 문자열 대입, 추가, 비교
등을 실행한다. (소스 10-9, ch10_09.cpp)
연산자

설명

[]

배열 첨자로 문자를 참조

=

한 문자열의 내용을 문자열 객체에 대입, assign() 함수를 대신함

+

문자열과 문자열을 결합하여 하나의 문자열로 완성, append() 함수를 대신
함

+=

하나의 문자열을 다른 문자열에 추가

<<

스트림 으로부터 문자열 추가

==, !=, <

문자열 간의 논리 연산 수행

<=, >, >=

문자열 클래
스에 연산자
오버로딩이
정의되어 가
능한 것임
(13장 연산
자 오버로딩)

문자열을 스트림으로 삽입

>>

비고

문자열 간의 관계 연산 수행
13/28
파일 출력 객체
• 파일 출력 객체
•
•
•
•

#include <fstream>
출력 내용을 파일 객체로 전달하면 됨!!!
출력 객체 생성  파일 열기(open())  출력
파일 사용을 마치고 파일 닫기(close())

ofstream

파일출력객체;

파일출력객체.open(“출력파일이름”);
파일출력객체 << 출력 내용;
파일출력객체.close();
14/28
표준 출력 코드와 파일 출력 코드 비교
프로그램
예제1

#include <iostream>
using namespace std;

실행 결과
//모니터
즐거운 프로그래밍

int main( )
{
cout << "즐거운 프로그래밍!!!" << endl;
return 0;
}

예제2

#include <iostream>
#include <fstream>
using namespace std;
int main( )
{
ofstream output;
output.open("test.txt");
output << "즐거운 프로그래밍!!! " << endl;
output.close( );
return 0;
}

//파일

15/28
파일 입력 객체
• 파일 입력 객체
•
•
•
•

#include <fstream>
입력 내용을 파일 객체에서 입력받음!!!
입력 객체 생성  파일 열기(open())  입력
파일 사용을 마치고 파일 닫기(close())

ifstream

파일출력객체;

파일입력객체.open(“입력파일이름”);
파일입력객체 >> 입력 내용저장변수;
파일입력객체.close();
16/28
표준 입력 코드와 파일 입력 코드 비교
프로그램
예제1

int main( )
{

}

예제2

char message[80];
cin >> message;
cout << message << endl;
return 0;

#include <iostream>
#include <fstream>
using namespace std;
int main( )
{

}

실행 결과
프로그래밍 키보드로입력
프로그래밍  화면에 출력

즐거운프로그래밍!!!

ifstream input;
char message[80];
input.open("test.txt");
input >> message;
cout << message << endl;
input.close( );
return 0;
17/28
파일 존재 여부 확인 멤버 함수
• fail()
• true : 파일 열기로 인해 파일 객체가 가리키는 파일이 없음을 의
미
• false : 파일 열기로 인해 파일 객체가 가리키는 파일이 있음을 의
미

• 소스 10-10 (ch10_10.cpp)

18/28
파일의 마지막 위치 확인 멤버 함수
• eof()
• true : 파일 포인터가 파일 마지막에 위치함
• fail : 파일 포인터가 파일 마지막이 아님을 의미함

• 소스 10_11, 10_12(ch10_11.cpp, ch10_12.cpp)

19/28
파일 읽기/ 파일로 출력하기

20/28
출력형식 지정자
• 출력형식 지정자
•
•
•
•
•

#include <iomanip>
setw(폭) : 출력 폭을 결정
setprecision(유효자릿수) : 소수점 이하 자릿수
fixed : 실수형을 본래 형태로 출력
showpoint : 소수점 출력

• 소스 10-13 (ch10_13.cpp)

21/28
FSTREAM 클래스
• fstream 클래스 = ofstream + ifstream
• 파일 객체 생성 후 open() 함수에서 파일 모드를 정할 수
있음
파일모드

설명

예

ios::in

파일에서 읽어오기

파일객체.open(파일이름, ios::in);

ios::out

파일에 출력하기

파일객체.open(파일이름, ios::out);

ios::app

파일에 추가하여 출력하기

파일객체.open(파일이름, ios::app);

ios::trunc

파일이 이미 존재하는 경우 삭제하고
새로운 파일로 생성하여 출력

파일객체.open(파일이름, ios::trunc);

이진 파일로 처리하기

파일객체.open(파일이름, ios::in | ios::binary);
파일객체.open(파일이름, ios::out |
ios::binary);
22/28

ios::binary
소스 10-14 (CH10_14.CPP)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

fs.open("test.txt", ios::app);
fs << "desk" << endl;
fs.close();

int main()
{
fstream fs;

fs.open("test.txt", ios::in);
string temp;
while (fs >> temp, !fs.eof())
{
cout << temp << endl;
}

fs.open("test.txt", ios::out);
if (fs.fail())
return 0;
fs << "keyboard" << endl;
fs << "monitor" << endl;
fs.close();

fs.close();
}

return 0;
23/28
이진 파일 입출력
• 이진 파일은 바이트 단위로 입출력
• 파일에 출력 함수
fstream 객체이름.write(char *, 바이트수);

• 파일에서 입력 함수
fstream 객체이름.read(char *, 바이트수);

24/28
소스 10-15 (CH10_15.CPP)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream fp;
int score[5]={78, 96, 100, 25, 96};
fp.open ("sample.txt", ios::out | ios::binary); //출력 이진파일 설정
fp.write((char*)score, 20); //score 위치에서 20바이트 출력
fp.close();
}

return 0;

25/28
소스 10-16 (CH10_16.CPP)
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
int main()
{
fstream fp;
int score;
fp.open ("sample.txt", ios::in | ios::binary); //입력-이진파일
if (fp.fail()) //파일열기 실패하면 프로그램 종료
return 1;
while (fp.read((char*)&score, 4), !fp.eof())
cout << setw(3) << right << score<< endl;
fp.close();
}

return 0;
26/28
임의 접근 파일
• 이진 파일의 경우 파일 포인터 위치를 임의로 이동할 수
있음
• seekp(), seekg()
멤버함수

설명

seekp(바이트, 이동기준) 파일에 출력할 때 파일 포인터를 지정한 만큼 이동
seekg(바이트, 이동기준)

파일에 입력할 때 파일 포인터를 지정한 만큼 이동

• 이동기준
이동기준

설명

ios::beg

파일의 처음 시작위치부터 지정한 바이트 만큼 이동

ios::end

파일의 마지막 위치에서 지정한 바이트 만큼 역으로 이동

ios::cur

현재 이치부터 지정한 바이트 만큼 이동
27/28
소스 10-17 (CH10_17.CPP)
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
int main()
{

fstream fp;
int score;
fp.open ("sample.txt", ios::in | ios::binary);
if (fp.fail())
return 1;
fp.read((char *) &score, 4);
cout << setw(3) << right << score<< endl;
fp.seekg(4, ios::cur);
fp.read((char *) &score, 4);
cout << setw(3) << right << score<< endl;
fp.close();

}

return 0;

28/28

Weitere ähnliche Inhalte

Was ist angesagt?

파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 Yong Joon Moon
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initializationEunjoo Im
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개Sungchul Park
 
파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229Yong Joon Moon
 
Ch.14 파일 강c v0.6
Ch.14 파일 강c v0.6Ch.14 파일 강c v0.6
Ch.14 파일 강c v0.6승태 김
 
파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리Booseol Shin
 
나에 첫번째 자바8 람다식 지앤선
나에 첫번째 자바8 람다식   지앤선나에 첫번째 자바8 람다식   지앤선
나에 첫번째 자바8 람다식 지앤선daewon jeong
 
Swift3 typecasting nested_type
Swift3 typecasting nested_typeSwift3 typecasting nested_type
Swift3 typecasting nested_typeEunjoo Im
 
Jupyter notebook 이해하기
Jupyter notebook 이해하기 Jupyter notebook 이해하기
Jupyter notebook 이해하기 Yong Joon Moon
 
파이썬+Json+이해하기 20160301
파이썬+Json+이해하기 20160301파이썬+Json+이해하기 20160301
파이썬+Json+이해하기 20160301Yong Joon Moon
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍Yong Joon Moon
 
Java 변수자료형
Java 변수자료형Java 변수자료형
Java 변수자료형Hyosang Hong
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰Sungchul Park
 
Learning Node Book, Chapter 5
Learning Node Book, Chapter 5Learning Node Book, Chapter 5
Learning Node Book, Chapter 5Ji Hun Kim
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130Yong Joon Moon
 
SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8Sangmin Lee
 
Realm.io for iOS
Realm.io for iOSRealm.io for iOS
Realm.io for iOSEunjoo Im
 
04장 고급변수 사용
04장 고급변수 사용04장 고급변수 사용
04장 고급변수 사용유석 남
 
자바스크립트 패턴 3장
자바스크립트 패턴 3장자바스크립트 패턴 3장
자바스크립트 패턴 3장Software in Life
 

Was ist angesagt? (20)

파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initialization
 
자바8 람다 나머지 공개
자바8 람다 나머지 공개자바8 람다 나머지 공개
자바8 람다 나머지 공개
 
파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229
 
Ch.14 파일 강c v0.6
Ch.14 파일 강c v0.6Ch.14 파일 강c v0.6
Ch.14 파일 강c v0.6
 
파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리
 
나에 첫번째 자바8 람다식 지앤선
나에 첫번째 자바8 람다식   지앤선나에 첫번째 자바8 람다식   지앤선
나에 첫번째 자바8 람다식 지앤선
 
Swift3 typecasting nested_type
Swift3 typecasting nested_typeSwift3 typecasting nested_type
Swift3 typecasting nested_type
 
Jupyter notebook 이해하기
Jupyter notebook 이해하기 Jupyter notebook 이해하기
Jupyter notebook 이해하기
 
파이썬+Json+이해하기 20160301
파이썬+Json+이해하기 20160301파이썬+Json+이해하기 20160301
파이썬+Json+이해하기 20160301
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍
 
Java 변수자료형
Java 변수자료형Java 변수자료형
Java 변수자료형
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰
 
Learning Node Book, Chapter 5
Learning Node Book, Chapter 5Learning Node Book, Chapter 5
Learning Node Book, Chapter 5
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130
 
Java lambda
Java lambdaJava lambda
Java lambda
 
SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8
 
Realm.io for iOS
Realm.io for iOSRealm.io for iOS
Realm.io for iOS
 
04장 고급변수 사용
04장 고급변수 사용04장 고급변수 사용
04장 고급변수 사용
 
자바스크립트 패턴 3장
자바스크립트 패턴 3장자바스크립트 패턴 3장
자바스크립트 패턴 3장
 

Andere mochten auch

7. variable scope rule,-storage_class
7. variable scope rule,-storage_class7. variable scope rule,-storage_class
7. variable scope rule,-storage_class웅식 전
 
2 2. operators
2 2. operators2 2. operators
2 2. operators웅식 전
 
7 mid term summary
7 mid term summary7 mid term summary
7 mid term summary웅식 전
 
12 1. multi-dimensional array
12 1. multi-dimensional array12 1. multi-dimensional array
12 1. multi-dimensional array웅식 전
 
11. array & pointer
11. array & pointer11. array & pointer
11. array & pointer웅식 전
 
2 3. standard io
2 3. standard io2 3. standard io
2 3. standard io웅식 전
 
15 2. arguement passing to main
15 2. arguement passing to main15 2. arguement passing to main
15 2. arguement passing to main웅식 전
 

Andere mochten auch (9)

7. variable scope rule,-storage_class
7. variable scope rule,-storage_class7. variable scope rule,-storage_class
7. variable scope rule,-storage_class
 
2 2. operators
2 2. operators2 2. operators
2 2. operators
 
7 mid term summary
7 mid term summary7 mid term summary
7 mid term summary
 
6. function
6. function6. function
6. function
 
7. arrays
7. arrays7. arrays
7. arrays
 
12 1. multi-dimensional array
12 1. multi-dimensional array12 1. multi-dimensional array
12 1. multi-dimensional array
 
11. array & pointer
11. array & pointer11. array & pointer
11. array & pointer
 
2 3. standard io
2 3. standard io2 3. standard io
2 3. standard io
 
15 2. arguement passing to main
15 2. arguement passing to main15 2. arguement passing to main
15 2. arguement passing to main
 

Ähnlich wie 10장 문자열클래스와파일클래스

Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10hungrok
 
고급 시스템 프로그래밍
고급 시스템 프로그래밍고급 시스템 프로그래밍
고급 시스템 프로그래밍junghee yu
 
고급 시스템 프로그래밍
고급 시스템 프로그래밍고급 시스템 프로그래밍
고급 시스템 프로그래밍junghee yu
 
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5현웅 김
 
포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++KWANGIL KIM
 
Perl Script Document
Perl Script DocumentPerl Script Document
Perl Script Document오석 한
 
9 object class
9 object class9 object class
9 object class웅식 전
 
파이썬 크롤링 모듈
파이썬 크롤링 모듈파이썬 크롤링 모듈
파이썬 크롤링 모듈Yong Joon Moon
 

Ähnlich wie 10장 문자열클래스와파일클래스 (20)

Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10
 
6 function
6 function6 function
6 function
 
강의자료3
강의자료3강의자료3
강의자료3
 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
 
고급 시스템 프로그래밍
고급 시스템 프로그래밍고급 시스템 프로그래밍
고급 시스템 프로그래밍
 
고급 시스템 프로그래밍
고급 시스템 프로그래밍고급 시스템 프로그래밍
고급 시스템 프로그래밍
 
Nodejs_chapter3
Nodejs_chapter3Nodejs_chapter3
Nodejs_chapter3
 
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
 
06장 함수
06장 함수06장 함수
06장 함수
 
강의자료4
강의자료4강의자료4
강의자료4
 
강의자료 2
강의자료 2강의자료 2
강의자료 2
 
포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++포트폴리오에서 사용한 모던 C++
포트폴리오에서 사용한 모던 C++
 
Perl Script Document
Perl Script DocumentPerl Script Document
Perl Script Document
 
JSON with C++ & C#
JSON with C++ & C#JSON with C++ & C#
JSON with C++ & C#
 
Apache avro
Apache avroApache avro
Apache avro
 
9 object class
9 object class9 object class
9 object class
 
Python
PythonPython
Python
 
파이썬 크롤링 모듈
파이썬 크롤링 모듈파이썬 크롤링 모듈
파이썬 크롤링 모듈
 
14. fiile io
14. fiile io14. fiile io
14. fiile io
 

Mehr von 웅식 전

15 3. modulization
15 3. modulization15 3. modulization
15 3. modulization웅식 전
 
12 2. dynamic allocation
12 2. dynamic allocation12 2. dynamic allocation
12 2. dynamic allocation웅식 전
 
10. pointer & function
10. pointer & function10. pointer & function
10. pointer & function웅식 전
 
5 2. string processing
5 2. string processing5 2. string processing
5 2. string processing웅식 전
 
5 1. character processing
5 1. character processing5 1. character processing
5 1. character processing웅식 전
 
15 1. enumeration, typedef
15 1. enumeration, typedef15 1. enumeration, typedef
15 1. enumeration, typedef웅식 전
 
3 2. if statement
3 2. if statement3 2. if statement
3 2. if statement웅식 전
 
3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib웅식 전
 
2 3. standard io
2 3. standard io2 3. standard io
2 3. standard io웅식 전
 
2 1. variables & data types
2 1. variables & data types2 1. variables & data types
2 1. variables & data types웅식 전
 
Goorm ide 교육용버전 for skku(학생)
Goorm ide 교육용버전 for skku(학생)Goorm ide 교육용버전 for skku(학생)
Goorm ide 교육용버전 for skku(학생)웅식 전
 
구름 기본 소개자료
구름 기본 소개자료구름 기본 소개자료
구름 기본 소개자료웅식 전
 
Goorm ide 소개 슬라이드(교육용 버전)
Goorm ide 소개 슬라이드(교육용 버전)Goorm ide 소개 슬라이드(교육용 버전)
Goorm ide 소개 슬라이드(교육용 버전)웅식 전
 
13th chapter12 slide
13th chapter12 slide13th chapter12 slide
13th chapter12 slide웅식 전
 
Week12 chapter11
Week12 chapter11 Week12 chapter11
Week12 chapter11 웅식 전
 

Mehr von 웅식 전 (20)

15 3. modulization
15 3. modulization15 3. modulization
15 3. modulization
 
13. structure
13. structure13. structure
13. structure
 
12 2. dynamic allocation
12 2. dynamic allocation12 2. dynamic allocation
12 2. dynamic allocation
 
10. pointer & function
10. pointer & function10. pointer & function
10. pointer & function
 
9. pointer
9. pointer9. pointer
9. pointer
 
5 2. string processing
5 2. string processing5 2. string processing
5 2. string processing
 
5 1. character processing
5 1. character processing5 1. character processing
5 1. character processing
 
15 1. enumeration, typedef
15 1. enumeration, typedef15 1. enumeration, typedef
15 1. enumeration, typedef
 
4. loop
4. loop4. loop
4. loop
 
3 2. if statement
3 2. if statement3 2. if statement
3 2. if statement
 
3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib3 1. preprocessor, math, stdlib
3 1. preprocessor, math, stdlib
 
2 3. standard io
2 3. standard io2 3. standard io
2 3. standard io
 
2 1. variables & data types
2 1. variables & data types2 1. variables & data types
2 1. variables & data types
 
Goorm ide 교육용버전 for skku(학생)
Goorm ide 교육용버전 for skku(학생)Goorm ide 교육용버전 for skku(학생)
Goorm ide 교육용버전 for skku(학생)
 
구름 기본 소개자료
구름 기본 소개자료구름 기본 소개자료
구름 기본 소개자료
 
Goorm ide 소개 슬라이드(교육용 버전)
Goorm ide 소개 슬라이드(교육용 버전)Goorm ide 소개 슬라이드(교육용 버전)
Goorm ide 소개 슬라이드(교육용 버전)
 
W14 chap13
W14 chap13W14 chap13
W14 chap13
 
13th chapter12 slide
13th chapter12 slide13th chapter12 slide
13th chapter12 slide
 
Week12 chapter11
Week12 chapter11 Week12 chapter11
Week12 chapter11
 
10th
10th10th
10th
 

10장 문자열클래스와파일클래스

  • 2. 차례 • • • • • • 문자열 객체 생성 파일 객체 생성 출력형식 지정자 fstream 클래스 이진 파일의 입출력 임의 접근 파일 2/28
  • 3. C++ 라이브러리에서 제공하는 클래스 • 자주 사용하는 객체에 대한 클래스에 대해 C++ 라이브 러리에서 미리 정의해 놓았다!! • 문자열 처리를 담당하는 string 클래스 • 파일 처리를 담당하는 fstream 클래스 • 클래스 정보를 담은 헤더파일을 포함하고 사용해야 함 3/28
  • 4. STRING • string • 문자열 클래스 • 멤버 변수와 멤버 함수가 이미 정의되어 있음 • 문자열 객체 생성하기 string s_name; //객체 s_name 이 생성 string s_name(“김갑순”); //객체 s_name 을 생성하면서 문자열을 매개변수로 하는 생성자 호출 string s_name=“김갑순”; 4/28
  • 5. 소스 10-1 (CH10_01.CPP) #include <iostream> #include <string> //문자열 클래스 사용을 위해 포함 using namespace std; int main() { string s_name; //스트링 클래스의 객체 생성 s_name="문자열"; //대입문으로 직접 문자열 할당 가능 cout << s_name << endl; cout <<"문자열 길이 : " << s_name.length() << endl; s_name=s_name+"클래스"; //문자열 연산자 사용 가능 //s_name.append("클래스"); cout << s_name << endl; cout <<"문자열 길이 : " << s_name.length() << endl; } return 0; 5/28
  • 6. 문자열 클래스 생성자 • 생성자 함수 형태 의미와 예 string ( ) 빈 문자열 객체를 생성 string str1; string (문자열객체) 객체를 생성하고 생성자에 문자열 객체를 전달 string name(str1); //str1은 이미 생성된 문자열 객체 string (char *) 객체를 생성하고 생성자에 문자열을 전달 char s[10]=“Computer”; string str2(s); string (개수, 문자) 객체를 생성하고 개수와 문자를 전달, 문자를 해당 개수만 큼 갖는 문자열 객체 생성 string str3(5, ‘A’); • 소스 10-2 (ch10_02.cpp) 6/28
  • 7. 문자열 클래스 APPEND 함수 • 문자열 추가 함수 함수 형태 의미와 예 append(문자열) 객체에 전달한 매개변수인 문자열을 덧붙인다. string newStr=“Computer”; newStr.append(“Science”); //”ComputerScience” append(문자열, 시작위치, 개수) 객체에 전달한 문자열에서 시작위치에서 개수만큼의 문자열을 덧붙인다. string newStr; newStr.append(“ComputerScience”, 0, 8); “Computer” append(개수, 문자) 객체에 지정한 개수만큼 해당 문자를 덧붙인다. string newStr=“Computer”; newStr.append(3, ‘!’); //”Computer!!!” • 소스 10-3 (ch10_03.cpp) 7/28
  • 8. 문자열 클래스 ASSIGN 함수 • 문자열 추가 함수 함수 형태 의미와 예 assign(문자열) 객체에 전달한 매개변수인 문자열로 초기화된다. string newStr=“Computer”; newStr.assign(“Science”); //”Science” assign(문자열, 시작위치, 개수) assign(문자열, 개수) 객체에 전달한 문자열에서 시작위치에서 개수만큼의 문자열로 초기화된다. string newStr; newStr.assign(“ComputerScience”, 8, 7); //“Science” newStr.assign(“ComputerScience”, 8); //“Computer” assign(개수, 문자) 객체에 지정한 개수만큼 해당 문자를 덧붙인다. string newStr=“Computer”; newStr.assign(3, ‘!’); //”!!!” • 소스 10-4 (ch10_04.cpp) 8/28
  • 9. 문자열 멤버 함수 : AT(), LENGTH(), SIZE(), CLEAR(), ERASE() 함수 형태 의미와 예 at(위치) 문자열 객체에서 지정한 위치의 문자를 반환한다. 문자 위치는 0부터 시작한다. string newStr=“Computer”; char rChar=newStr.at(0); //’C’ length(), size() 문자열 객체에 저장한 문자열 길이를 반환한다. string newStr=“Programming”; int LenString=newStr.length(); //11 clear(), erase(위치, 개수) clear() : 객체를 빈 문자열로 초기화 erase(위치, 개수) : 지정된 위치부터 해당 개수만큼 문 자를 삭제함 string newStr=“Computer”; newStr.erase(6,2); //”Comput” newStr.clear(); //문자열이 모두 삭제됨 • 소스 10-5 (ch10_05.cpp) 9/28
  • 10. 문자열 멤버 함수 : EMPTY(), SUBSTR(), SWAP() 함수 형태 empty() 의미와 예 문자열 객체가 아무 내용도 저장하고 있지 않으면 true, 아니면 false를 반환한다. string newStr=“Computer”; newStr.empty(); // true 반환 문자열 객체의 지정한 위치에서 해당 개수만큼의 문 자로 이루어진 문자열을 반환한다. substr(위치, 개수) string newStr="ComputerScience"; newStr.substr(0, 8); //0번째부터 8번째까지의 문자 모음인 "Computer"가 반환됨 swap(문자열) 전달받은 매개변수인 문자열 객체로 교환한다. string newStr1 ("Computer), newStr2("Science"); newStr1.swap(newStr2); //newStr1과 newStr2의 값 이 서로 교환된다. • 소스 10-6 (ch10_06.cpp) 10/28
  • 11. 문자열 멤버 함수 : FIND(), REPLACE() 함수 형태 find(문자) find(문자, 시작위치) 의미와 예 문자열 객체에서 지정한 문자를 0번째 부터 찾아서 그 위치를 반환 string newStr="ComputerScience"; newStr.find('e'); //문자는 0번째부터 위치를 표시, 따라서 6을 반환함 newStr.find('e', 8); //8번째 이후 문자 'e'는 11번째에 있으므로 11을 반 환함 문자열 객체에서 지정한 문자열을 0번째부터 찾아서 그 위치를 반환 string newStr="Test1Test2Test3Test4", newStr2="Test"; find(문자열) newStr.find(newStr2); //0번째부터 문자열 newStr2를 찾아서 0을 반환 find(문자,열 시작위치) newStr.find(newStr2, 5); //5번째 위치부터 문자열 newStr2의 위치를 찾아서 반환함 swap(문자열) 문자열 객체의 해당 위치에서 매개변수로 전달한 문자열로 개수만큼의 문자로 변경 string newStr1 ("Computer), newStr2("Science"); newStr1.replace(0, 2, newStr2) // newStr1이 "Scmputer"로 변경 • 소스 10-7 (ch10_07.cpp) 11/28
  • 12. 문자열 멤버 함수 : COMPARE(), INSERT() 함수 형태 compare(문자열) compare(시작위치, 개수, 문자열) insert(시작위치, 문자열) insert(시작위치, 개수, 문자) 의미와 예 문자열 객체와 매개변수 문자열 객체와 같은가를 비교한다. 만약 기 준 문자열이 크면 1, 매개변수 문자열이 크면 -1, 같으면 0을 반환 string Str1=“Computer”, Str2=“Science”; Str1.compare(Str2); //-1을 반환 문자열 객체에서 지정한 문자열을 지정한 위치에 삽입해서 반환한다. string str1="AAAA", str2="BBBB"; str1.insert(0, str2); // str1이 "BBBBAAAA"으로 갱신됨 str1.insert(4, 3, 'C'); //str1이 'C'를 세 개 삽입해서 "BBBBCCCAAAA"으로 갱신됨 • 소스 10-8 (ch10_08.cpp) 12/28
  • 13. 문자열 클래스 연산자 • 문자열 클래스는 연산자를 이용해서 문자열 대입, 추가, 비교 등을 실행한다. (소스 10-9, ch10_09.cpp) 연산자 설명 [] 배열 첨자로 문자를 참조 = 한 문자열의 내용을 문자열 객체에 대입, assign() 함수를 대신함 + 문자열과 문자열을 결합하여 하나의 문자열로 완성, append() 함수를 대신 함 += 하나의 문자열을 다른 문자열에 추가 << 스트림 으로부터 문자열 추가 ==, !=, < 문자열 간의 논리 연산 수행 <=, >, >= 문자열 클래 스에 연산자 오버로딩이 정의되어 가 능한 것임 (13장 연산 자 오버로딩) 문자열을 스트림으로 삽입 >> 비고 문자열 간의 관계 연산 수행 13/28
  • 14. 파일 출력 객체 • 파일 출력 객체 • • • • #include <fstream> 출력 내용을 파일 객체로 전달하면 됨!!! 출력 객체 생성  파일 열기(open())  출력 파일 사용을 마치고 파일 닫기(close()) ofstream 파일출력객체; 파일출력객체.open(“출력파일이름”); 파일출력객체 << 출력 내용; 파일출력객체.close(); 14/28
  • 15. 표준 출력 코드와 파일 출력 코드 비교 프로그램 예제1 #include <iostream> using namespace std; 실행 결과 //모니터 즐거운 프로그래밍 int main( ) { cout << "즐거운 프로그래밍!!!" << endl; return 0; } 예제2 #include <iostream> #include <fstream> using namespace std; int main( ) { ofstream output; output.open("test.txt"); output << "즐거운 프로그래밍!!! " << endl; output.close( ); return 0; } //파일 15/28
  • 16. 파일 입력 객체 • 파일 입력 객체 • • • • #include <fstream> 입력 내용을 파일 객체에서 입력받음!!! 입력 객체 생성  파일 열기(open())  입력 파일 사용을 마치고 파일 닫기(close()) ifstream 파일출력객체; 파일입력객체.open(“입력파일이름”); 파일입력객체 >> 입력 내용저장변수; 파일입력객체.close(); 16/28
  • 17. 표준 입력 코드와 파일 입력 코드 비교 프로그램 예제1 int main( ) { } 예제2 char message[80]; cin >> message; cout << message << endl; return 0; #include <iostream> #include <fstream> using namespace std; int main( ) { } 실행 결과 프로그래밍 키보드로입력 프로그래밍  화면에 출력 즐거운프로그래밍!!! ifstream input; char message[80]; input.open("test.txt"); input >> message; cout << message << endl; input.close( ); return 0; 17/28
  • 18. 파일 존재 여부 확인 멤버 함수 • fail() • true : 파일 열기로 인해 파일 객체가 가리키는 파일이 없음을 의 미 • false : 파일 열기로 인해 파일 객체가 가리키는 파일이 있음을 의 미 • 소스 10-10 (ch10_10.cpp) 18/28
  • 19. 파일의 마지막 위치 확인 멤버 함수 • eof() • true : 파일 포인터가 파일 마지막에 위치함 • fail : 파일 포인터가 파일 마지막이 아님을 의미함 • 소스 10_11, 10_12(ch10_11.cpp, ch10_12.cpp) 19/28
  • 20. 파일 읽기/ 파일로 출력하기 20/28
  • 21. 출력형식 지정자 • 출력형식 지정자 • • • • • #include <iomanip> setw(폭) : 출력 폭을 결정 setprecision(유효자릿수) : 소수점 이하 자릿수 fixed : 실수형을 본래 형태로 출력 showpoint : 소수점 출력 • 소스 10-13 (ch10_13.cpp) 21/28
  • 22. FSTREAM 클래스 • fstream 클래스 = ofstream + ifstream • 파일 객체 생성 후 open() 함수에서 파일 모드를 정할 수 있음 파일모드 설명 예 ios::in 파일에서 읽어오기 파일객체.open(파일이름, ios::in); ios::out 파일에 출력하기 파일객체.open(파일이름, ios::out); ios::app 파일에 추가하여 출력하기 파일객체.open(파일이름, ios::app); ios::trunc 파일이 이미 존재하는 경우 삭제하고 새로운 파일로 생성하여 출력 파일객체.open(파일이름, ios::trunc); 이진 파일로 처리하기 파일객체.open(파일이름, ios::in | ios::binary); 파일객체.open(파일이름, ios::out | ios::binary); 22/28 ios::binary
  • 23. 소스 10-14 (CH10_14.CPP) #include <iostream> #include <fstream> #include <string> using namespace std; fs.open("test.txt", ios::app); fs << "desk" << endl; fs.close(); int main() { fstream fs; fs.open("test.txt", ios::in); string temp; while (fs >> temp, !fs.eof()) { cout << temp << endl; } fs.open("test.txt", ios::out); if (fs.fail()) return 0; fs << "keyboard" << endl; fs << "monitor" << endl; fs.close(); fs.close(); } return 0; 23/28
  • 24. 이진 파일 입출력 • 이진 파일은 바이트 단위로 입출력 • 파일에 출력 함수 fstream 객체이름.write(char *, 바이트수); • 파일에서 입력 함수 fstream 객체이름.read(char *, 바이트수); 24/28
  • 25. 소스 10-15 (CH10_15.CPP) #include <iostream> #include <fstream> using namespace std; int main() { fstream fp; int score[5]={78, 96, 100, 25, 96}; fp.open ("sample.txt", ios::out | ios::binary); //출력 이진파일 설정 fp.write((char*)score, 20); //score 위치에서 20바이트 출력 fp.close(); } return 0; 25/28
  • 26. 소스 10-16 (CH10_16.CPP) #include <iostream> #include <iomanip> #include <fstream> using namespace std; int main() { fstream fp; int score; fp.open ("sample.txt", ios::in | ios::binary); //입력-이진파일 if (fp.fail()) //파일열기 실패하면 프로그램 종료 return 1; while (fp.read((char*)&score, 4), !fp.eof()) cout << setw(3) << right << score<< endl; fp.close(); } return 0; 26/28
  • 27. 임의 접근 파일 • 이진 파일의 경우 파일 포인터 위치를 임의로 이동할 수 있음 • seekp(), seekg() 멤버함수 설명 seekp(바이트, 이동기준) 파일에 출력할 때 파일 포인터를 지정한 만큼 이동 seekg(바이트, 이동기준) 파일에 입력할 때 파일 포인터를 지정한 만큼 이동 • 이동기준 이동기준 설명 ios::beg 파일의 처음 시작위치부터 지정한 바이트 만큼 이동 ios::end 파일의 마지막 위치에서 지정한 바이트 만큼 역으로 이동 ios::cur 현재 이치부터 지정한 바이트 만큼 이동 27/28
  • 28. 소스 10-17 (CH10_17.CPP) #include <iostream> #include <iomanip> #include <fstream> using namespace std; int main() { fstream fp; int score; fp.open ("sample.txt", ios::in | ios::binary); if (fp.fail()) return 1; fp.read((char *) &score, 4); cout << setw(3) << right << score<< endl; fp.seekg(4, ios::cur); fp.read((char *) &score, 4); cout << setw(3) << right << score<< endl; fp.close(); } return 0; 28/28