// 문자열 뒤에 s를 붙이면 std::string 타입이 된다.
auto string1 = "Hello World"; // const char*
auto string2 = "Hello World";s; // std::string
// R"()" 형태로 사용 가능하며, 이스케이프 시퀀스를 사용하지 않아도 되도록 해준다.
std::string str = R"(Hello "World"!)";
// 여러줄에 걸쳐서 쓸 수 있게 해준다.
std::string str = R"(Line 1
Line 2 with \\t)";
// )" 로 끝나야해서 문자열 안에 )"를 사용할 수 없다. 이를 위해서 확장된 Raw string literal을 제공한다.
// 구분자는 로우 문자열의 시작과 끝에서 항상 동일해야 하며 최대 16문자로 구성 할 수 있다.
string str = R"-(The Characters)" are embedded in this string)-"; // -(으로 시작해서 )-으로 끝났다.
namespace Contoso
{
namespace v_10
{
template <typename T>
class Funcs
{
public:
Funcs(void);
T Add(T a, T b);
T Subtract(T a, T b);
T Multiply(T a, T b);
T Divide(T a, T b);
};
}
// v_20으로 namespace를 썻지만, inline 효과로 인해서 Contoso 네임스페이스로 맴버에 접근할 수 입다.
// ex) Contoso::Funcs{};
inline namespace v_20
{
template <typename T>
class Funcs
{
public:
Funcs(void);
T Add(T a, T b);
T Subtract(T a, T b);
T Multiply(T a, T b);
std::vector<double> Log(double);
T Accumulate(std::vector<T> nums);
};
}
}
퍼펙트 라운딩 트립
소수점이 정확히 변환되는것