반응형

cpp string function

include <string>


+타입 변환

stod(), stof(), stoi, stol, stold, stoll, stoul, stoull

double(8), float, 

int(4), long(4 or 8),

 long double(16) ,

 long long(8), unsigned long, unsigned long long

format string: %f, %f, 

%d, %ld, 

%Lf, 

%lld, %lu, %llu


double stod(const string &str, size_t *idx=0) ;

double stod(const wstring &str, size_t *idx=0) ;

스트링을 더블 타입으로 파싱하여 리턴한다. 

idx가 주어지면, 숫자 파싱한 다음 처음 수가 아닌 문자의 위치 인덱스를 할당한다.

ex)

std::string orbits("365.24 29.53") ;

std::string::size_type sz ;

double earth = std::stod(orbits, &sz) ;        // sz는 6. (공백위치)

double moon = std::stod(orbits.substr(sz)) ; // " 29.53"을 파싱. 


long long stoll(const string& str, size_t* idx=0, int base=10) ;  // wstring also.

base는 진법. 0이면 포맷에 따라 자동 판단.  

std::string str="8245821 0xffff 020" ;

std::string::size_type sz=0 ;

while(!str.empty()) {

long long ll = std::stoll(str, &sz, 0) ;

str = str.substr(0, sz) ;

}

10진수, 16진수, 8진수로 판단 : 84245821,   65535,  16


int i_dec=std::stoi("2001,A Space", &sz) ;        // 2001

int i_hex = std::stoi("40c3", nullptr, 16) ;        // 16579

int i_bin = std::stoi("-10010110001", nullptr, 2) ;    // -1201   ; 10010110001(2) = 1201

int i_auto = std::stoi("0x7f", nullptr, 0) ;    // 127


++ 문자열로 변환

std::to_string,   to_wstring

std::string pi = std::to_string(3.1415926) ;



++ getline

스트림에서 스트링으로 라인을 읽음.


istream& getline(istream& is, string& str, char delim) ;    // (delim은 생략 가능)

is 스트림에서 문자열을 추출하여 str로 넘긴다.  딜리미터가 발견되거나 new line이나 파일 끝일 때까지.

delimiter가 발견되면, 딜리미터는 버린다. 

#include <iostream>

#include <string>


std::string name ;

std::getline(std::cin, name) ;


++std::operator >> (string)

스트림에서 문자열을 추출한다.

std::cin >> name ;

std::cout << name ;










'Develop > C&CPP' 카테고리의 다른 글

algorithm 1. test, find, count, search, foreach  (0) 2018.06.01
numeric: accumulate, adjacent_difference, inner_product, partial_sum  (0) 2018.06.01
string  (0) 2018.05.30
map  (0) 2018.05.29
List 1  (0) 2018.05.28

+ Recent posts