문자열 처리하기 working with Strings

Slides:



Advertisements
Similar presentations
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 실 습실 습 2.
Advertisements

3. 자료형. 담당교수 : 이 성 우 C++ 프로그래밍 상수와 변수 (3) 1. 변수 (variable)  프로그램 수행 도중에 자료  변수를 위해 은 변하지 않음  선언 시에 반드시 그. ※ 저장 정보의 구성 ① 정보의 종류 ② 저장 값 ③ 저장 위치 int Num.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 01. C 언어 기반의 C++ 1.
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
제 3 장 변수와 자료형.
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
Power C++ 제6장 포인터와 문자열.
C++ Espresso 제1장 기초 사항.
제 1장 C 언어의 소개.
C++ Espresso 제2장 제어문과 함수.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
강좌명 : C++프로그래밍 (C++ Programming)
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Chapter 12 구조체와 열거형 구조체 열거형.
윤 홍 란 제3장 클래스와 객체의 사용-1 윤 홍 란
8. 객체와 클래스 (기본).
쉽게 풀어쓴 C언어 Express 제18장 입출력과 라이브러리 함수 C Express.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express Slide 1 (of 23)
Java Programming Language (4)
화면(UI) 기반 도메인모델 작성 2014년 8월.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
Chapter 4 매개변수와 오버로딩 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
18장. 헤더 파일과 구현 파일 01_ 헤더 파일과 구현 파일의 사용.
14장. 함수 1 01_ 함수의 기본 02_ 인자의 전달.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
누구나 즐기는 C언어 콘서트 제2장 기초 사항.
C ++ 프로그래밍 시작.
변수와 자료형.
Part 04 입출력과 전처리 ©우균, 창병모 이 슬라이드는 부산대학교 우균이 작성하였습니다. 오류나 수정할 사항 있으면 연락 주세요.
Chapter 1 C++ 기초 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
Chapter 11 Strings.
프로그램과 데이터의 구조화 Organizing programs and data
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
Chapter 2 Lexical Elements, Operators, and the C System
2019년 2월 24일 오후 4시 59분 제2장 표준 입출력 함수
C언어 프로그래밍의 이해 Ch13. 선행처리기와 주석문.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
Chapter 1 C와는 다른 C++. 최호성.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
4. 고급변수 사용 : 포인터와 관련하여 메모리 바라보기
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
Chapter 05. 입출력 함수.
제 3장 데이터형과 연산자 Hello!! C 언어 강성호 김학배 최우영.
루프와 카운트 Looping and counting
멤버 함수인 operator+()가 실행, 또는 전역 함수인 operator+()가 실행 Point p3 = p1+p2; 에서
Operating System Multiple Access Chatting Program using Multithread
C-언어와 기반구조 정보보호학과 이정수 교수.
nauten Compiler – Report Ver.3 Mini-C (주간)
남아메리카 선교 김수정, 이하정 전희진, 장성경.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
쉽게 풀어쓴 C언어 Express 제2장 프로그램 개발 과정 C Express.
자바 5.0 프로그래밍.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
뇌를 자극하는 C 프로그래밍.
포인터와 배열 조 병 규 한 국 교 통 대 학 교 SQ Lab..
Stream의 이해 : System Bufferring
새로운 타입 정의하기 Defining new types
실습과제 1번 /* 1. 멤버 변수로 반경 radius를 갖고, 그 값을 모니터에 출력하는
박성진 컴퓨터 프로그래밍 기초 [03] 변수와 자료형 박성진
C.
Python 기본.
Presentation transcript:

문자열 처리하기 working with Strings Chapter 1 문자열 처리하기 working with Strings

Example 1 이름을 입력 받아서 인사하는 C++ 프로그램으로 확장 // ask for a person's name, and greet the person #include <iostream> #include <string> int main() { // ask for the person's name std::cout << "Please enter your first name: "; // read the name std::string name; // define `name' std::cin >> name; // read into `name' // write a greeting std::cout << "Hello, " << name << "!" << std::endl; return 0; }

변수(variable) 변수는 이름(name)을 갖는 객체(object)이다. std::string name; // name을 정의(definition) 변수의 이름: name 변수의 타입: std::string 변수는 이름(name)을 갖는 객체(object)이다. 객체는 타입(type)을 갖는 컴퓨터 메모리의 일부를 말함 객체의 타입에 내포되어 있는 인터페이스(interface) 해당 타입의 객체에 사용 가능한 연산(operation)들의 집합 즉, name은 string 타입이 제공하는 모든 일을 할 수 있음: 문자열 연결, 문자열 길이계산, 널 문자로 초기화 등 string이라는 표준라이브러리와 관련된 헤더는 <string> 따라서, #include <string> 필요 name은 main()함수 내에서만 유효한 지역 변수(local variable) 즉, main() 함수가 시작할 때 생성되고, 끝날 때 소멸됨 int k; + - * / <

읽어 들이기: cin 입력 연산자(input operator) >> std::cin >> name; // read into name 표준입력 std::cin에서 string을 읽어서 그 내용을 name이라는 객체에 저장 처음 나오는 공백문자(space, tab, backspace, newline)는 버림 그 다음 공백 문자 또는 파일의 끝(end-of-file)까지 문자를 읽음 std::cin 은 표준 입력 스트림(standard input stream) 버퍼(buffer) 입출력 효율을 위해 버퍼 사용: 버퍼에 모아두었다가 처리 버퍼를 플러쉬(flush)함 버퍼가 꽉 찰 때까지 기다리지 않고 그 내용을 출력장치에 씀

Example 2. 이름에 테두리 만들기 장식해 보자. (검정은 프로그램의 출력, 녹색은 키보드 입력) Please enter your first name: Estragon ******************** * * * Hello, Estragon! * John이 들어오면? Alexandricus가 들어오면? 문자열의 길이를 알아내고, 그에 따라 폭을 계산하고, 폭에 맞추어 출력하는 절차를 밟아야 한다.

// ask for a person's name, and generate a framed greeting #include <iostream> #include <string> int main() { std::cout << "Please enter your first name: "; std::string name; std::cin >> name; // build the message that we intend to write const std::string greeting = "Hello, " + name + "!"; // build the second and fourth lines of the output const std::string spaces(greeting.size(), ' '); const std::string second = "* " + spaces + " *"; // build the first and fifth lines of the output const std::string first(second.size(), '*'); // write it all std::cout << std::endl; std::cout << first << std::endl; std::cout << second << std::endl; std::cout << "* " << greeting << " *" << std::endl; return 0; }

세 가지 새로운 개념 const std::string greeting = “Hello, ” + name + “!”; = 연산자를 사용한 변수 값의 초기화(initialize) greeting 변수를 정의하며 greeting 값을 초기화 할 수 있다 + 연산자를 사용하여 문자열을 결합(concatenate) string변수+ string변수 // OK name1+name2 string변수+ 문자열 리터럴 // OK name+”abc” 문자열 리터럴 + string변수 // OK “abc”+name 문자열 리터럴 + 문자열 리터럴 // ERROR! “abc”+”xyz” const를 사용하여 변수 값을 상수(constant)로 고정시킴 const 사용하면, 변수 정의할 때 반드시 초기화 어떤 이점이 있지?

연산자 오버로딩(operator overloading) 연산자 + int i1 = 12, i2 = 34; i1 + i2; // produces 46, not 1234 std::string s1 = "hel", s2 = "lo"; s1 + s2; // produces "hello“ 연산자 << 와 >> char c; int i; float f;   std::cin >> c; std::cin >> i; std::cin >> f; C언어에서 모든 산술 연산자도 오버로드 된 것임 int i1 = 10, i2 = 20, i3; float f1 = 1.0, f2 = 2.0, f3; double d1 = 1.00, d2 = 2.00, d3; i3 = i1 + i2; f3 = f1 + f2; d3 = d1 + d2; std::cout << c; std::cout << i; std::cout << f;

멤버함수에 의한 초기화 const std::string spaces(greeting.size(), ‘ ’); const std::string first(second.size(), ‘*’); string 타입은 size()라는 멤버 함수(member function)를 제공 greeting.size()는 객체의 문자열 길이를 넘겨 줌 변수의 타입에 따라 표현식으로부터 변수를 구성 (construct) 예를 들어, std::string spaces(10, ‘*’ ); stars라는 객체는 “**********”을 갖게 된다. spaces(greeting.size(), ‘ ’); spaces라는 객체는 greeting.size() 개 만큼 공백문자(‘ ’)를 갖는 문자열로 초기화된다. first(second.size(), ‘*’);

문자열 연습문제 1. 스트링 변수 a, b, c의 값은 무엇인가? for the input: std::string a, b, c; std::cin >> a >> b >> c; 2. 두 개의 문자열을 입력 받아서, 짧은 길이를 갖는 문자열을 출력하라. 또한, 두 개의 문자열을 결합해서 출력하라. for the input: all-cows eat123 grass. Every good boy deserves fudge!

문자열 연산자 첨자 연산자(subscript operator) [] 두 개의 문자열을 비교하는 연산자 스트링의 각 문자를 접근할 때 사용 첫번째 문자는 첨자 0 부터 시작함 For example, given std::string a = "Susan"; Then a[0] == ’S’ and a[1] == ’u’ and a[4] == ’n’. 두 개의 문자열을 비교하는 연산자 string1 == string2 string1 != string2