C++17์ด์ ์๋ ์ฝ๊ธฐ ์ ์ฉ ์คํธ๋ง์ ๋ฐ๋ ํจ์์ ๋งค๊ฐ๋ณ์ ํ์ ์ ์ฝ๊ฒ ๊ฒฐ์ ํ ์ ์์๋ค. const char*๋ก ์ง์ ํ๋ฉด std::string์ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ์์ c_str( )๋ data( )๋ฅผ ์ด์ฉํ์ฌ string์ const char*๋ก ๋ณํํด์ ํธ์ถํด์ผ ํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด std::string์ ๊ฐ์ฒด์งํฅ ์์ฑ๊ณผ ์ฌ๊ธฐ์ ์ ๊ณตํ๋ ํฌํผ ๋ฉ์๋๋ฅผ ์ ๋๋ก ํ์ฉํ ์ ์๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ C++17๋ถํฐ ์ถ๊ฐ๋ std::string_view๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
std::string_view
- ํค๋: <sring_view>
- ํด๋์ค ํ
ํ๋ฆฟ: std::base_string_view
- ์ถ๊ฐ ๋ฉ์๋: remove_prefix(size_t), remove_suffix(size_t)
→ ์ง์ ํ ์คํ์
๋งํผ ์คํธ๋ง์ ์์ ํฌ์ธํฐ๋ฅผ ์์ผ๋ก ๋น๊ธฐ๊ฑฐ๋ ๋ ํฌ์ธํฐ๋ฅผ ๋ค๋ก ๋ฏธ๋ค์ ์คํธ๋ง์ ์ถ์ํ๋ ๊ธฐ๋ฅ
- ์ ์์ฌํญ: string๊ณผ string_view๋ฅผ ์๋ก ์ฐ๊ฒฐ/๊ฒฐํฉํ ์ ์๋ค.
- ๋ฆฌํฐ๋: ํ์ค ์ฌ์ฉ์ ์ ์ ๋ฆฌํฐ๋์ธ 'sv'๋ฅผ ์ฌ์ฉํ๋ฉด ์คํธ๋ง ๋ฆฌํฐ๋์ std::string_view๋ก ๋ง๋ค ์์๋ค.
ex) auto string1 = "Love my blog a lot"sv ; // auto type: string_view
ex) auto string2 = "Love my blog a lot"s ; // auto type: string
ex) auto string3 = "Love my blog a lot" ; // auto type: const char*
- ํน์ง: ๋๋ถ๋ถ ๊ฐ์ผ๋ก ์ ๋ฌ(Pass-By-Value)ํ๋ค.
→ ์คํธ๋ง์ ๋ํ ํฌ์ธํฐ์ ๊ธธ์ด๋ง ๊ฐ๊ณ ์์ด์ ๋ณต์ฌํ๋๋ฐ ์ค๋ฒํค๋๊ฐ ์ ๊ธฐ ๋๋ฌธ์ด๋ค.
string_view๋ ์ค์ ๋ก const string& ๋์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ค๋ฒํค๋๋ ์๋ค. ๋ค์ ๋งํด ์คํธ๋ง์ ๋ณต์ฌํ์ง ์๋๋ค. string_view์ ์ธํฐํ์ด์ค๋ c_str( )์ด ์๊ณ data( )๋ ๋๊ฐ์ด ์ ๊ณตํ๋ค.
์ถ์ฒ: ์ ๋ฌธ๊ฐ๋ฅผ ์ํ C++
'๐จ๐ปโ๐ป programming > โฝ c, c++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++]'์ ๋ฌธ๊ฐ๋ฅผ ์ํ C++17'์ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌ(ing...) (0) | 2022.05.16 |
---|---|
[C++] ์ ๋ค๋ฆญ ์๊ณ ๋ฆฌ์ฆ ๋ชจ์ (0) | 2022.05.16 |
[C++] ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ ํ๋กํ ํ์ & ํ๊ณ (0) | 2022.02.08 |
(์ ๋ฌธ๊ฐ๋ฅผ ์ํ C++/ ๊ฐ์ 4ํ) - I/O ์ ์ถ๋ ฅ ์์ ๋ถ์ (0) | 2022.01.31 |
[C++] ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ (0) | 2021.03.14 |
์ ํ๋ ๊ฒ ๋ณด๋ค ๋ซ๊ฒ ์ง
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!