본문 바로가기

Computer Science

c++ 문자열 변환

  • 문자열 -> 정수
    • stoi(str)
  • 문자열 -> 실수 (double)
    • stod(str)
    • stof(str)
  • 문자열 -> long 
    • stol(str)
  • 문자열 -> long double
    • stold

 

2016-09-15 20:59:57.421 0.351s,
2016-09-15 20:59:58.233 1.181s,
2016-09-15 20:59:58.299 0.8s,
2016-09-15 20:59:58.688 1.041s,
2016-09-15 20:59:59.591 1.412s,
2016-09-15 21:00:00.464 1.466s,
2016-09-15 21:00:00.741 1.581s,
2016-09-15 21:00:00.748 2.31s,
2016-09-15 21:00:00.966 0.381s,
2016-09-15 21:00:02.066 2.62s

 

-> 문자열로 주어지는 시간들을 서로 비교할 수 있도록 바꾸어 본다.

 

1
2
3
4
5
6
7
8
9
10
11
12
int change_num(string t) {
    string th = t.substr(112);
    string tm = t.substr(14,2);
    string ts = t.substr(176);
    ts.erase(ts.begin()+2, ts.begin()+3);
    
    int hour= stoi(th) * 60 * 60 * 1000;
    int minute= stoi(tm) * 60 * 1000;
    int sec = stoi(ts);
    
    return hour + minute + sec;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

2016-09-15/ 20 / : / 59 / : / 57.421/

-> 각각 시간, 분, 초를 구한 후 시간은 초와 비교하여  60 * 60 만큼 곱해주고 분은 초와 비교하여 60 만큼 곱해준다. 

또한 초 (sec) 가 소수점 3자리를 가지고 있으므로 시간, 분에 1000 만큼 곱해주어 상대적으로 크기를 맞춰준다. 

 

+

 

[stod]

0.351s -> 정수형 문자가 아니기 때문에 stod를 통해 실수로 만들어본다. 

1
2
3
4
5
6
int change_double(string t) {
    string tmp = t.substr(24, t.size()-25);
    double n = stod(tmp);
    int res = n * 1000;
    return res-1;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

+

[stol]

: 문자열을 16진수로 변환할 때 사용했었다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void findPasswd() {
    int nums[4]; //16진수로 바꾼 숫자들을 저장함 
    int unit = n / 4;
 
    int index = 0;
    for (int i = 0; i < n; i+= unit) {
        char c_tmp[unit];
        string tmp = st.substr(i, unit);
        strcpy(c_tmp, tmp.c_str());
        
        nums[index++= (int)stol(c_tmp, 016);
        
    }
 
    for (auto i : nums) {
        s_set.push_back(i);
        
    }
        
 }
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

[문자열 간 변환]

 

-uppercase 

cities[0] = "NewYork"

trasform(cities[0].begin(), cities[0].end(), cities[0].begin(), ::toupper);

 

-lowercase 

cities[0] = "NewYork"

trasform(cities[0].begin(), cities[0].end(), cities[0].begin(), ::tolower);

 

[char형 일 때]

cities[0] = "NewYork"

 

string tmp = "";

for (int i = 0; i < cities[0].length(); i++ ) {

      tmp += toupper(cities[0][i]);

}

 

'Computer Science' 카테고리의 다른 글

좌표의 크기가 너무 크다면? 좌표 압축 알고리즘  (0) 2019.09.05
올림, 내림, 반올림 함수  (0) 2019.08.29
Binary Tree  (0) 2019.08.09
Binary Search Tree  (0) 2019.08.09
HashMap 정렬  (0) 2019.05.03