๐ ํฌ์คํ
๋ด์ฉ
- string_view์ ๋ํด์ ์์๋ด
์๋ค.
๐ ์ฌ์ฉ ์ด์
string_view์ ์ฅ์ ์ ๋ฌด์๋ณด๋ค๋ ๋ฌธ์์ด์ ๋ํ ํฌ์ธํฐ์ ๊ธธ์ด๋ง ๊ฐ์ก๋๋ค.
๊ทธ๋ ๊ธฐ์ ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ๋ฌธ์์ด์ ํ๋ํ ์ ์์ต๋๋ค.
โ
์ฝ๋
ํด๋น ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋จ์ํ char ๋ฐฐ์ด์ ๋ง๋ค์ด string ๊ฐ์ฒด์ ๋์
ํ๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
ํ์ง๋ง ๋ด๋ถ์ ์ผ๋ก ๋ดค์ ๊ฒฝ์ฐ string ๊ฐ์ฒด๋ char์ ๋ฌธ์์ด์ ๋ณต์ ํ์ฌ ์์ฑํฉ๋๋ค.
#include <iostream>
int main()
{
char cPtr[6] = "hello";
std::string str = cPtr;
std::cout << str << std::endl;
}
ํ์ง๋ง ์ด ๋ string_view๋ฅผ ์ด์ฉํ๋ฉด ๋ณต์ ๊ฐ ์๋ ํฌ์ธํฐ๋ฅผ ๊ฐ๋ฆฌ์ผ ์ค๋ฒํค๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
โ
์ฝ๋
#include <iostream>
#include <string_view>
int main()
{
char cPtr[6] = "hello";
std::string_view str(cPtr);
std::cout << str << std::endl;
}
์ฝ๋ ์์ผ๋ก๋ง ๋ณด์์ ๋๋ ํฐ ์ฐจ์ด๊ฐ ์์ด ๋ณด์ด์ง๋ง ๋ฉ๋ชจ๋ฆฌ๋ ํ์ธํด๋ณด๋ฉด
๋ ๋ค ๊ฐ์ ํฌ์ธํฐ๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ด์ฒ๋ผ ๋ฐ์ดํฐ๊ฐ ๋ณต์ ๋์ง ์๊ณ ํฌ์ธํฐ๋ง ๊ฐ๋ฆฌํค๊ฒ ๋์ด ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ง๋ง string_view์ ๊ธฐ๋ฅ์ ์ฌ๊ธฐ์ ๋์ด ์๋๋๋ค.
๋ฌธ์์ด์ค ์์์ ์ผ๋ถ๋ถ๋ง ์๋ผ์ ์ฌ์ฉํ๊ณ ์ถ์ ๋๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
โ
์ฝ๋
#include <iostream>
#include <string_view>
int main()
{
char cPtr[6] = "hello";
std::string_view str(cPtr, 3);
std::cout << str << std::endl;
}
๋ฌธ์์ด์ ์งค๋ผ์ ๋ค์ ๋ง๋ค์๋ค๊ณ ์๊ฐํ ์ ์๋๋ฐ ์ด๋ฌํ ์ํฉ์์ ๊ฐ์ ํฌ์ธํฐ๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ต๋๋ค.
๐ ์ฃผ์์ฌํญ
์ฌ์ฉํ๋ ๊ณผ์ ์์ ํฌ๊ฒ ์ฃผ์์ฌํญ์ ์์ง๋ง 1๊ฐ์ง๋ ๊ผญ ์ง์ผ์ค์ผ ํฉ๋๋ค.
๋ฐ๋ก string_view๋ฅผ ์ฌ์ฉํ๋ ๋์ ์๋ณธ ๊ฐ์ฒด์ ๋ํ ๋ณํ๊ฐ ์์ด์ผ ํฉ๋๋ค.
๋ค์ ๊ฐ์ ์ํฉ์ ๋ณด๋ฉด ์ดํด๊ฐ ๊ฐ์ค ๊ฒ๋๋ค.
โ
์ฝ๋
#include <iostream>
#include <string_view>
int main()
{
char cPtr[6] = "Hello";
std::string_view str(cPtr);
strcpy_s(cPtr, "World");
std::cout << str << std::endl;
}
โ
์คํ๊ฒฐ๊ณผ
// World
๋ง์ฝ ์ด๋ฐ ์์ ์ฝ๋๊ฐ ์๋ค๋ฉด str์ ๋น์ฐํ cPtr์ ํฌ์ธํฐ๋ฅผ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ณ๊ฒฝ ์ ๋ด์ฉ์ด ๋ฌ๋ผ ์ง๊ฒ ๋ฉ๋๋ค.
๐ ์์๋๊ธฐ
โ
์ฝ๋
#include <iostream>
#include <string_view>
int main()
{
char cPtr[6] = "Hello";
std::string_view str(cPtr);
str = "World";
std::cout << cPtr << std::endl;
}
โ
์คํ๊ฒฐ๊ณผ
// Hello
์ฆ string_view์ ๊ฐ์ฒด์ ์๋ก์ด ๊ฐ์ ๋ฃ์ ์ ์ด๋ ๊ธฐ์กด ๊ฐ์ฒด์ ์ํฅ์ด ์๊ธฐ๋ ๊ฒ์ด ์๋,
์๋ก์ด ๊ฐ์ฒด๋ฅผ ํฅํ ํฌ์ธํฐ๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๊ธฐ์ ๊ฐ ๋ณ๊ฒฝ์ด ๋ฐ์ํ์ง ์์ต๋๋ค.