본문 바로가기

C++

Part 2: string,sizeof,goto,try-throw-catch..C++ 책 반납 전 소소한 정리(C/C++ 로 작동시키는 Raspberry Pi 3)

C/C++ で働かす Raspberry Pi 3

C/C++ 로 작동시키는 Raspberry Pi 3




8.string 스트링

vector와 닮아 있고, 크게 다른 부분은 문자열의 끝에 널문자('\0')가 들어갑니다.

---------------

string str(10,'n'); -> nnnnnnnnnn

-> str=string(10,'n'); 으로 표현 가능합니다.

str.empty() -> 비어있으면 1 (true), 아니면 0 (false)

str.size() -> 문자수 -> 10

-> str.length() 도 같은 의미 입니다.

---------------


9.enum 열거형

사용자 정의 타입, 정수값에 대칭되는 식별자를 지정

---------------

enum games {MineCraft, StarCraft, Tetris};

games g=StarCraft; -> g의 값은 1입니다.

g=2; -> Error

-> games g=StarCraft; 는 const int g=1; 과 같은 의미입니다.

---------------


10. sizeof

객체의 메모리점유 비트수를 반환합니다.

---------------

int num=10000;

cout << sizeof(num) << endl; -> 4

---------------


11.try throw catch

---------------

#include <iostream>

using namespace std;

int main(void)

{

int num;

cout << "Please input number(1-10)" << endl;

cin >> num;

try

{

if(num<1 || num>10)

throw 1;

}

catch(int e)

{

string eVal;

switch(e)

{

case 1:

eVal="Input error!";

break;

default:

eVal="Undefined error!";

break;

}

cout << eVal << endl;

return e;

}

cout << "Good number: " << num << endl;

return 0;

}

catch(type arg)로 형식과 변수를 자유롭게 가능하니 변경해봤습니다.

#include <iostream>

using namespace std;

int main(void)

{

int num;

cout << "Please input number(1-10)" << endl;

cin >> num;

try

{

if(num<1 || num>10)

throw "Input error!";

}

catch(char const* str)

{

cout << str << endl;

return 1;

}

cout << "Good number: " << num << endl;

return 0;

}

catch(char const* str) 부분을 catch(string str)으로 하면

terminate called after throwing an instance of 'char const*'

에러가 발생했습니다. ( Dev-C++ 5.11)

---------------


12.goto

프로그램실행의 흐름을 변경합니다.

---------------

#include <iostream>

using namespace std;

int main(void)

{

cout << "HA" << endl; -> "HA" 출력

cout << "HA" << endl; -> "HA" 출력

cout << "HA" << endl; -> "HA" 출력

goto skip; ->처리의 흐름을 skip: 위치로 이동시킵니다.

cout << "HO" << endl; -> "HO"는 출력되지 않습니다.

skip: cout << "HA" << endl; -> "HA" 출력

cout << "!!!" << endl; -> "!!!" 출력

for(int i=0;i<10;i++)

{

if(i==3) goto skip2; ->처리의 흐름을 skip2: 위치로 이동시킵니다. 3은 출력되지 않습니다.

if(i==9) break; -> 9이면 루프를 종료하니 8까지만 출력이 됩니다.

cout << i << endl;

skip2:;

}

return 0;

}

HA

HA

HA

HA

!!!

0

1

2

4

5

6

7

8

---------------

Part2 ..끝..

반응형