c:라이브러리_추가가_필요한_자료형

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
c:라이브러리_추가가_필요한_자료형 [2022/01/17 10:26] jonghoonc:라이브러리_추가가_필요한_자료형 [2022/01/19 14:08] jonghoon
Line 11: Line 11:
  
 ===== string ===== ===== string =====
 +<string> 라이브러리에 있는 자료형으로 문자열을 좀 더 쉽게 다룰 수 있다.
 +한 예로 + 연산자로 서로 다른 문자열을 합칠 수 있다.
 +포함되어 있는 함수는 매우 많으나 주로 사용하는 몇 가지만 설명한다.
 +
 +^ 함수명 ^ 함수 설명 ^ 예시 ^
 +| to_string(x) | int나 double 같은 숫자형 자료를 string 자료형으로 변환하여 반환한다. | to_string(3) $\rightarrow$ "3" |
 +| ::: | ::: | to_string(3.8) $\rightarrow$ "3.8" |
 +| stoi(x) | string 자료형을 int형 정수로 변환하여 반환한다. | stoi("3") $\rightarrow 3 |
 +| ::: | ::: | stoi("3.8") $\rightarrow$ 3 |
 +| stod(x) | string 자료형을 double형 실수로 변환하여 반환한다. | stod("3") $\rightarrow$ 3.0 |
 +| ::: | ::: | stod("3.8") $\rightarrow$ 3.8 |
 +| string.substr(start, count) | 문자열을 start 위치부터 start+count-1 위치까지 잘라서 string 자료형으로 반환한다. | "abcde".substr(1,3) $\rightarrow$ "bcd" |
 +| string.c_str() | string 자료형인 문자열을 const char형 포인터로 변환하여 반환한다. | "abcde".c_str() $\rightarrow$ "abcde"(type is const char*) |
 +
 +substr의 경우 인자가 하나만 있으면 start위치부터 끝까지를 반환한다.
 +
 +다음은 각 함수를 사용하는 코드다.
 +
 +<code:C++ | example_string.cpp>
 +#include <iostream>
 +#include <string>
 +#include <typeinfo>
 +
 +using std::cout;
 +using std::string;
 +using std::to_string;
 +using std::stoi;
 +using std::stod;
 +
 +int main()
 +{
 +    cout.precision(17);
 +    
 +    string str1 = "1234.56789";
 +    
 +    int x = stoi(str1);// x = 1234
 +    double xd = stod(str1); // xd = 1234.56789
 +    
 +    string i_to_s = to_string(x); // i_to_s = "1234"
 +    string d_to_s = to_string(xd); // d_to_s = "1234.56789"
 +    
 +    string sub1 = str1.substr(5);// sub1 = "56789"
 +    string sub2 = str1.substr(5,3);// sub2 = "567"
 +    string sub3 = sub1 + sub2;// sub3 = "56789567"
 +    
 +    const char *ch = str1.c_str(); // ch = "1234.56789"
 +    
 +    cout << "str: " << str1 << "\t type: " << typeid(str1).name() << "\n";
 +    cout << "str to int: " << x << "\t type: " << typeid(x).name() << "\n";
 +    cout << "str to double: " << xd << "\t type: " << typeid(xd).name() << "\n";
 +    cout << "substr one parameter: " << sub1 << "\t type: " << typeid(sub1).name() << "\n";
 +    cout << "substr two parameter: " << sub2 << "\t type: " << typeid(sub2).name() << "\n";
 +    cout << "string + operation: " << sub3 << "\t type: " << typeid(sub3).name() << "\n";
 +    cout << "str to char array: " << ch << "\t type: " << typeid(ch).name() << "\n";
 +}
 +</code>
 +
 +실행결과는 다음과 같다.
 +
 +str: 1234.56789 $\quad$ type: std::_ _cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >\\
 +str to int: 1234 $\quad$ type: int\\
 +str to double: 1234.56789 $\quad$ type: double\\
 +substr one parameter: 56789 $\quad$ type: std::_ _cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >\\
 +substr two parameter: 567 $\quad$ type: std::_ _cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >\\
 +string + operation: 56789789 $\quad$ type: std::_ _cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >\\
 +str to char array: 1234.56789 $\quad$ type: char const*\\
 +
 +g++의 경우 typeid를 나름대로 define하여 쓰고 있어 그냥 실행하면 int는 i로 double은 d로 const char* 는 PKc로 나타난다.
 +위와 같이 정확한 명칭으로 나타나게 하기 위해서는
 +<code:shell>
 +./example_string | c++filt --types
 +</code>
 +형식으로 실행을 해야한다.
 +
 +===== vector =====
  • c/라이브러리_추가가_필요한_자료형.txt
  • Last modified: 2023/09/05 15:46
  • by 127.0.0.1