๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ Development Study/๐Ÿ‘จ๐Ÿพ‍๐Ÿ’ป C++

๋ฌธ์ž์—ด

by eazuooz 2022. 8. 19.

ํด๋ž˜์Šค ๋Š” string์ด์ „ ์žฅ์—์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ์†Œ๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š” ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ž์—ด์€ ์‹ค์ œ๋กœ ์ผ๋ จ์˜ ๋ฌธ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž ์œ ํ˜• ์š”์†Œ์˜ ์ผ๋ฐ˜ ๋ฐฐ์—ด๋กœ๋„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ๋ฐฐ์—ด:

char foo [20];

๋”ฐ๋ผ์„œ ์ด ๋ฐฐ์—ด์€ ์ตœ๋Œ€ 20์ž์˜ ์‹œํ€€์Šค๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์šฉ๋Ÿ‰์ด ์™„์ „ํžˆ ์†Œ์ง„๋  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋ ˆ์ด๋Š” ๋” ์งง์€ ์‹œํ€€์Šค๋„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ๊ทธ๋žจ์˜ ํŠน์ • ์ง€์ ์—์„œ ์‹œํ€€์Šค "Hello"๋˜๋Š” ์‹œํ€€์Šค ์ค‘ ํ•˜๋‚˜ "Merry Christmas"๋ฅผ ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. foo๋‘˜ ๋‹ค 20์ž ์šฉ๋Ÿ‰์˜ ์‹œํ€€์Šค์— ๋งž๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทœ์น™์— ๋”ฐ๋ผ ๋ฌธ์ž ์‹œํ€€์Šค๋กœ ํ‘œํ˜„๋˜๋Š” ๋ฌธ์ž์—ด์˜ ๋์€ ํŠน์ˆ˜ ๋ฌธ์ž๋กœ ์‹ ํ˜ธ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. null ๋ฌธ์ž'\0' ๋Š” ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์„ (๋ฐฑ์Šฌ๋ž˜์‹œ, 0) ๋กœ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

์ด ๊ฒฝ์šฐ ์œ ํ˜•์˜ ์š”์†Œ 20๊ฐœ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด char์€foo"Hello"๋ฌธ์ž ์‹œํ€€์Šค๋ฅผ ์ €์žฅํ•˜๊ณ  ๋‹ค์Œ ๊ณผ "Merry Christmas"๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

. ๋ฌธ์ž์—ด ์ž์ฒด์˜ ๋‚ด์šฉ ๋’ค์— ์–ด๋–ป๊ฒŒ '\0'์‹œํ€€์Šค์˜ ๋์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด null ๋ฌธ์ž( )๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ํšŒ์ƒ‰ ํŒจ๋„์€ char๊ฐ’์ด ๊ฒฐ์ •๋˜์ง€ ์•Š์€ ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

null๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž ์‹œํ€€์Šค์˜ ์ดˆ๊ธฐํ™”

๋ฌธ์ž ๋ฐฐ์—ด์€ ์ผ๋ฐ˜ ๋ฐฐ์—ด์ด๋ฏ€๋กœ ์ด์™€ ๋™์ผํ•œ ๊ทœ์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฏธ๋ฆฌ ๊ฒฐ์ •๋œ ๋ฌธ์ž ์‹œํ€€์Šค๋กœ ๋ฌธ์ž ๋ฐฐ์—ด์„ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

char myword[] = { 'H', 'e', 'l', 'l', 'o', '\0' };

์œ„๋Š” ๋‹จ์–ด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฌธ์ž ์™€ ๋์— null ๋ฌธ์ž ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ char์ดˆ๊ธฐํ™”๋œ ์œ ํ˜•์˜ 6๊ฐœ ์š”์†Œ ๋ฐฐ์—ด์„ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค . ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ž ์š”์†Œ์˜ ๋ฐฐ์—ด์—๋Š” ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด ์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค . ์ด์ „ ์žฅ์˜ ์ผ๋ถ€ ์˜ˆ์—์„œ ์‚ฌ์šฉ๋œ ํ‘œํ˜„์‹์—์„œ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์€ ์ด๋ฏธ ์—ฌ๋Ÿฌ ๋ฒˆ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ…์ŠคํŠธ๋ฅผ ํฐ๋”ฐ์˜ดํ‘œ( )๋กœ ๋ฌถ์–ด ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. 

 

์ด๊ฒƒ์€ ์•„๋งˆ๋„ ์ด์ „ ์˜ˆ์ œ์—์„œ ์‚ฌ์šฉ๋œ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด ์ž…๋‹ˆ๋‹ค.

ํฐ๋”ฐ์˜ดํ‘œ( ")๋กœ ๋ฌถ์ธ ๋ฌธ์ž ์‹œํ€€์Šค๋Š” ๋ฆฌํ„ฐ๋Ÿด ์ƒ์ˆ˜ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์œ ํ˜•์€ ์‚ฌ์‹ค null๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์—๋Š” ํ•ญ์ƒ '\0'๋์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” null ๋ฌธ์ž( )๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ˜ธ์ถœ๋œ char ์š”์†Œ์˜ ๋ฐฐ์—ด์€ myword๋‹ค์Œ ๋‘ ๋ฌธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ null๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž ์‹œํ€€์Šค๋กœ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

char myword[] = { 'H', 'e', 'l', 'l', 'o', '\0' };
char myword[] = "Hello"; 

๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋ฌธ์ž ๋ฐฐ์—ด์€ myword6๊ฐœ์˜ ์š”์†Œ ํฌ๊ธฐ๋กœ ์„ ์–ธ๋ฉ๋‹ˆ๋‹ค char. ์ฆ‰, ๋‹จ์–ด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” 5๊ฐœ ๋ฌธ์ž ์™€ ์‹œํ€€์Šค์˜ ๋์„ ์ง€์ • "Hello"ํ•˜๋Š” ์ตœ์ข… null ๋ฌธ์ž( '\0'), ๋‘ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํฐ๋”ฐ์˜ดํ‘œ( ")๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ์„ ์–ธ๋˜๋Š” ์ˆœ๊ฐ„์— ๋ฌธ์ž ๋ฐฐ์—ด์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋‚˜์ค‘์— (์ด๋ฏธ ์„ ์–ธ๋œ ํ›„์—) ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์€ ์ผ๋ฐ˜ ๋ฐฐ์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด์™€ ๋™์ผํ•œ ์ œํ•œ์ด ์žˆ์œผ๋ฉฐ ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ‘œํ˜„์‹(myword๊ฐ€ ์ด๋ฏธ ์œ„์™€ ๊ฐ™์ด ์„ ์–ธ๋œ ๊ฒฝ์šฐ):

myword = "Bye";
myword[] = "Bye"; 

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์œ ํšจ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .

myword = { 'B', 'y', 'e', '\0' };

๋ฐฐ์—ด์— ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ ์š”์†Œ์— ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

myword[0] = 'B';
myword[1] = 'y';
myword[2] = 'e';
myword[3] = '\0';

๋ฌธ์ž์—ด ๋ฐ null๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž ์‹œํ€€์Šค

null๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž ์‹œํ€€์Šค๊ฐ€ โ€‹โ€‹์žˆ๋Š” ์ผ๋ฐ˜ ๋ฐฐ์—ด์€ C ์–ธ์–ด์—์„œ ๋ฌธ์ž์—ด์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ์œ ํ˜•์ž…๋‹ˆ๋‹ค(์ด ๋•Œ๋ฌธ์— C-๋ฌธ์ž์—ด ์ด๋ผ๊ณ ๋„ ํ•จ ). C++์—์„œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ฌธ์ž์—ด(class)์— ๋Œ€ํ•œ ํŠน์ • ์œ ํ˜•์„ ์ •์˜ํ•˜๋”๋ผ๋„ string์—ฌ์ „ํžˆ null๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž ์‹œํ€€์Šค(C-๋ฌธ์ž์—ด)๊ฐ€ ์žˆ๋Š” ์ผ๋ฐ˜ ๋ฐฐ์—ด์€ ์–ธ์–ด์—์„œ ๋ฌธ์ž์—ด์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์€ ์—ฌ์ „ํžˆ stringโ€‹โ€‹๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ํ•ญ์ƒ null๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž ์‹œํ€€์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” ๋‘ ๋ฌธ์ž์—ด ํ‘œํ˜„(C-๋ฌธ์ž์—ด ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฌธ์ž์—ด)์ด ๊ณต์กดํ•˜๋ฉฐ ๋ฌธ์ž์—ด์„ ํ•„์š”๋กœ ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ•จ์ˆ˜๋Š” ๋‘˜ ๋‹ค ์ง€์›ํ•˜๋„๋ก ์˜ค๋ฒ„๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด cin,coutnull๋กœ ๋๋‚˜๋Š” ์‹œํ€€์Šค๋ฅผ ์ง์ ‘ ์ง€์›ํ•˜์—ฌ ๋ฌธ์ž์—ด์ฒ˜๋Ÿผ ์ง์ ‘ ์ถ”์ถœ cinํ•˜๊ฑฐ๋‚˜ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. cout์˜ˆ๋ฅผ ๋“ค์–ด:

// strings and NTCS:
#include <iostream>
#include <string>
using namespace std;

int main ()
{
  char question1[] = "What is your name? ";
  string question2 = "Where do you live? ";
  char answer1 [80];
  string answer2;
  cout << question1;
  cin >> answer1;
  cout << question2;
  cin >> answer2;
  cout << "Hello, " << answer1;
  cout << " from " << answer2 << "!\n";
  return 0;
}
๋‹น์‹ ์˜ ์ด๋ฆ„์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํ˜ธ๋จธ
์–ด๋”” ์‚ฌ์„ธ์š”? ๊ทธ๋ฆฌ์Šค
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ทธ๋ฆฌ์Šค์—์„œ ์˜จ Homer!

์ด ์˜ˆ์—์„œ๋Š” null๋กœ ๋๋‚˜๋Š” ์‹œํ€€์Šค์™€ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๋ฌธ์ž ๋ฐฐ์—ด์ด ๋ชจ๋‘ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. cin๊ทธ๊ฒƒ๋“ค์€ ๋ฐ ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ์ƒ๋‹นํžˆ ์ƒํ˜ธ ๊ตํ™˜ ๊ฐ€๋Šฅ coutํ•˜์ง€๋งŒ ์„ ์–ธ์—๋Š” ๋ˆˆ์— ๋„๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ์„ ์–ธ๋  ๋•Œ ์•”์‹œ์  ๋˜๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•˜๋Š” ๊ณ ์ • ํฌ๊ธฐ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. question1ํฌ๊ธฐ๋Š” ์ •ํ™•ํžˆ 20์ž(์ข…๋ฃŒ ๋„ ๋ฌธ์ž ํฌํ•จ)์ด๊ณ  answer1ํฌ๊ธฐ๋Š” 80์ž์ž…๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด์€ ๋‹จ์ˆœํžˆ ๋ฌธ์ž์—ด์ด์ง€๋งŒ ํฌ๊ธฐ๋Š” ์ง€์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฌธ์ž์—ด์˜ ๋™์  ํฌ๊ธฐ๊ฐ€ ๋Ÿฐํƒ€์ž„ ์ค‘์— ๊ฒฐ์ •๋˜๋Š” ๋ฐ˜๋ฉด ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— ์ปดํŒŒ์ผ ์‹œ ๊ฒฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์–ด์จŒ๋“  null๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž ์‹œํ€€์Šค์™€ ๋ฌธ์ž์—ด์€ ์„œ๋กœ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

๋„ ์ข…๋ฃŒ ๋ฌธ์ž ์‹œํ€€์Šค๋Š” ์•”์‹œ์ ์œผ๋กœ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฌธ์ž์—ด์€ string์˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜ c_str๋˜๋Š” data๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„ ์ข…๋ฃŒ ๋ฌธ์ž ์‹œํ€€์Šค๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

char myntcs[] = "some text";
string mystring = myntcs;  // convert c-string to string
cout << mystring;          // printed as a library string
cout << mystring.c_str();  // printed as a c-string 

(์ฐธ๊ณ : c_str์™€ data์˜ ๋ฉค๋ฒ„๋Š” string๋ชจ๋‘ ๋™์ผํ•ฉ๋‹ˆ๋‹ค)

'๐Ÿ“ Development Study > ๐Ÿ‘จ๐Ÿพโ€๐Ÿ’ป C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๊ตฌ์กฐ์ฒด  (0) 2022.08.19
๋™์  ๋ฉ”๋ชจ๋ฆฌ  (0) 2022.08.19
ํฌ์ธํ„ฐ  (0) 2022.08.19
๋ฐฐ์—ด  (0) 2022.08.19
namespace  (0) 2022.08.18

๋Œ“๊ธ€