์ƒˆ์†Œ์‹

๋ฐ˜์‘ํ˜•
C++/๋ฌธ๋ฒ•

C++ string_view

  • -
๋ฐ˜์‘ํ˜•

๐Ÿ‘‰ ํฌ์ŠคํŒ… ๋‚ด์šฉ

  • 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์— ๊ฐ์ฒด์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ๋„ฃ์„ ์‹œ ์ด๋Š” ๊ธฐ์กด ๊ฐ์ฒด์— ์˜ํ–ฅ์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด ์•„๋‹Œ,
์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ํ–ฅํ•œ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜๊ธฐ์— ๊ฐ’ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.