본문 바로가기

C++

C++ 예외처리 try~throw~catch

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <string>    // cin >> string 하기위해서는 <string>필요
using namespace std;
 
double stringToInt(string s)
{
    double num = 0;
    bool fstDot = false;
    double fraction = 0;
    int fDigit = 0;
 
    for (int i = 0; i < s.length(); i++) {
        if (s[i] >= '0' && s[i] <= '9') {
            if (fstDot == false)
                num = num * 10 + s[i] - '0';
            else {
                fraction = fraction * 10 + s[i] - '0';
                fDigit++;
            }
        }
        else if (s[i] == '.' && fstDot == false)      // 소수점
            fstDot = true;
        else
            throw i;
    }
    return num + fraction / pow(10, fDigit);
}
 
// 문자열을 숫자로 변환
int main()
{
    double n;
    string numStr;    
 
    cout << "Enter string to convert : ";
    cin >> numStr;
    
    try {
        n = stringToInt(numStr);
        cout << n << endl;
    }
    catch (int x) {
        cout << "Error at " << x << "\'th position" << endl;
    }
}
cs

 

입력받은 문자열(string)을 숫자로 변환하는 프로그램입니다. 소수점을 처리하기 위해서 fstDot flag를 사용하였습니다.

throw() 에서 몇번째 자리에서 에러가 생겼는지를 보내줍니다.

 

beeeye dmu

 

'C++' 카테고리의 다른 글

파일입출력, 파일에서 원하는 단어를 검색하는 프로그램(find)  (0) 2016.07.06
C++ 입출력시스템 정리  (0) 2016.07.05
STL vector와 sort  (0) 2016.07.05
STL vector의 사용법  (0) 2016.07.04
enum 과 연산자 중복의 예  (0) 2016.07.04