일상 코딩
[C++/CPP] 17.02 std::String 여러 생성자들과 형변환, various constructor and typecasting 본문
C++/따배C++ 17강 String
[C++/CPP] 17.02 std::String 여러 생성자들과 형변환, various constructor and typecasting
polarcompass 2021. 12. 15. 01:33728x90
#include<string>
#include<iostream>
#include<vector>
#include<sstream>
template <typename T>
std::string ToString( T x)
{
std::ostringstream osstream;
osstream << x;
return osstream.str();
}
template <typename T>
bool FromString(const std::string &str, T &x)
{
std::istringstream isstream(str);
return (isstream >> x) ? true : false;
}
int main(void)
{
std::string my_string("my string");
// 0부터 2번 인덱스 글자는 건너뛰고 3번째 인덱스 글자부터 5개 글자 슬라이싱
std::string second_string(my_string,3, 2);
std::cout << second_string << std::endl;
std::vector<char> vec;
for(auto &e: "Today is a good day.")
vec.push_back(e);
std::string third_string(vec.begin(), vec.end());
std::cout << third_string << std::endl;
std::string fourth_string(vec.begin(), std::find(vec.begin(), vec.end(), 'y'));
std::cout << fourth_string << std::endl;
// 유용한것.
// 정수를 문자열로 변환
std::string my_str(std::to_string(1004));
// 파이썬처럼 문자열합 사용 가능
my_str += std::to_string(128);
std::cout << my_str << std::endl;
// string -> int로 변환
int i = std::stoi(my_str);
std::cout << i << std::endl;
// string -> float로 변환
float f = std::stof(my_str);
std::cout << f << std::endl;
// template <typename T>
// std::string ToString( T x)
// {
// std::ostringstream osstream;
// osstream << x;
// return osstream.str();
// }
std::string my_str2(ToString(3.141592));
double d;
if (FromString(my_str2, d))
std::cout << "d : " << d << std::endl;
else
std::cout << "Cannot convert string to double" << std::endl;
std::cout << "my_str2 : " << my_str2 << std::endl;
return 0;
}
728x90
'C++ > 따배C++ 17강 String' 카테고리의 다른 글
[C++/CPP] 17.05 string 대입, 교환, 덧붙이기, 삽입 (0) | 2021.12.16 |
---|---|
[C++/CPP] 17.04. 문자 접근과 배열로 전환 (0) | 2021.12.16 |
[C++/CPP] 17.03. std::string 길이와 용량, length and capacity (0) | 2021.12.16 |