ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ ๋ฌธ์์ด VS ๋ฌธ์๋ฐฐ์ด
char name1[6]={'G','r','a','c','e','\0'}; // name1์ ๋ฌธ์์ด "Grace"
char name2[5]={'G','r','a','c','e'}; //name2๋ ๋ฌธ์์ด์ด ์๋๊ณ ๋จ์ ๋ฌธ์ ๋ฐฐ์ด
null ๊ฐ์ ๋ฐ๋ผ ๋ฌธ์์ด๊ณผ ๋ฌธ์๋ฐฐ์ด์ด ์ ํด์ง๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด์ ์ฃผ์๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์
#include <iostream>
using namespace std;
int main()
{
// ์ฃผ์๋ฅผ ์
๋ ฅ๋ฐ์ ์ถ๋ ฅํ๊ธฐ,
char address[100]; // ํฌ๊ธฐ๊ฐ 100์ธ char address ๋ฐฐ์ด ์์ฑ
cout << "์ฃผ์ ์
๋ ฅ: ";
cin >> address; // ์
๋ ฅ๋ฐ์ ์ฃผ์๋ฅผ address์ ๋ฃ๊ธฐ
cout << "์
๋ ฅ๋ ์ฃผ์๋ " << address << " ์
๋๋ค." << endl;
return 0;
}
๋ฏธ๋ฆฌ address ๊ฐ์ ๋ฐ์ ๋ฐฐ์ด์ ์์ฑํด๋๋ฉด ๋๊ณ cin์ ํตํด ์ ๋ ฅ๋ฐ์ ์ฃผ์๋ฅผ ๋ฐฐ์ด address์ ๋ฃ์ด์ค๋ค.
RESULT:
๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค. ๋์ด์ฐ๊ธฐ๋ฅผ ์ ๋ ฅํ ์์ ํ๋์ ๋จ์ด๋ง ์ถ์ถ๋๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด '๊ฒฝ๊ธฐ๋ ์ฑ๋จ์ ๋ถ๋น๊ตฌ'๋ฅผ ์ ๋ ฅํ๋ฉด '๊ฒฝ๊ธฐ๋' ๋ง ์ ๋ ฅ๋๋ค.
์ด๋ cin.getline()์ ์ด์ฉํ์ฌ ๋ฌธ์์ด์ ๋ฐ์ผ๋ฉด ์์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ ์ ์๋ค.
โจ getline()
getline์ istream ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํ cin.getline() ํจ์์ string ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํ getline() ํจ์๊ฐ ์๋ค.
- istream ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ cin.getline()
- C์ธ์ด ์คํ์ผ์ ๋ฌธ์์ด์ ์ ๋ ฅ ๋ฐ์ ๋ ์ฌ์ฉ ( charํ ๋ฐฐ์ด, ๋ฌธ์์ด์ ๋์ด ๋๋ฌธ์)
- ๋ฌธ์ ๋ฐฐ์ด์ด๋ฉฐ ๋ง์ง๋ง ๊ธ์๊ฐ '\0' ์ธ c-string์ ์ ๋ ฅ ๋ฐ๋๋ฐ ์ฌ์ฉํ๋ค
- ํฌ๊ธฐ n์ ์ง์ ํ๋ฉด n-1 ๊ฐ์ ๋ฌธ์ ๊ฐ์๋งํผ ์ฝ์ด์ str์ ์ ์ฅํ๋ค. ( ์ฌ๊ธฐ์ n๋ฒ์งธ ๋ฌธ์๋ NULL('\0')์ผ๋ก ๋ฐ๊พผ๋ค)
- ์ธ ๋ฒ์งธ ์ธ์์ธ delim์ ๋ณ๋๋ก ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ ์ํฐ('\n')๋ก ์ธ์ํ๋ค
- ์ง์ ํ delimiter๋ฅผ ๋ง๋๊ธฐ ์ ๊น์ง ๋ชจ๋ ๋ฌธ์๋ฅผ ์ฝ์ด์ str ๋ฐฐ์ด์ ์ ์ฅ (๋ํดํธ ๊ตฌ๋ถ์๋ ๊ฐํ ๋ฌธ์)
- delim์ ์ง์ ํด์ฃผ๋ฉด ๊ทธ ์ ํ์ ๋ฌธ์ ์ง์ ๊น์ง ์ฝ์ด str์ ์ ์ฅํ๋ค.
cin.getline(char str,streamsize n);
cin.getline(char str,streamsize n,char dlim);
์ฆ, ํ์์ cin.getline(๋ณ์ ์ฃผ์, ์ต๋ ์ ๋ ฅ๊ฐ๋ฅ ๋ฌธ์์, ์ข ๊ฒฐ๋ฌธ์); ์ด๋ค.
- string์ getline() ํจ์
- ์ ๋ ฅ ๊ฐ๋ฅํ ์ต๋ ๋ฌธ์ ์๋ฅผ ์ง์ ํ์ง ์์๋ ๋๋ค.
- ์ง์ ํ delimiter๋ฅผ ๋ง๋๊ธฐ ์ ๊น์ง ๋ชจ๋ ๋ฌธ์๋ฅผ ์ฝ์ด์ string ๊ฐ์ฒด์ ์ ์ฅํ๋ค.
- ์ด๋์ ๋ํดํธ ๊ตฌ๋ถ์๋ ๊ฐํ ๋ฌธ์๋ค.
getline(istream& is,string str);
getline(istream& is,string str,char dlim);
์์ ์ฃผ์ ์ ๋ ฅ๋ฐ๋ ์ฝ๋๋ฅผ ๋น์นธ์ด ์์ด๋ <Enter> ํค๊ฐ ์ ๋ ฅ ๋ ๋๊น์ง ํ๋์ ๋ฌธ์์ด๋ก ์ธ์ํ๊ฒ ๋ณํํด๋ณด์.
#include <iostream>
using namespace std;
int main()
{
cout << "์ฃผ์๋ฅผ ์
๋ ฅํ์ธ์: ";
char address[100];
cin.getline(address, 100, '\n'); // ๋น์นธ์ด ์์ด๋ null ์ด ์
๋ ฅ๋ ๋๊น์ง ํ๋์ ๋ฌธ์์ด๋ก ์ธ์
cout << "์ฃผ์๋ " << address << "์
๋๋ค\n";
}
์ด๋ฌ๋ฉด ์์ ๋ฌธ์ ์ ์ด ํด๊ฒฐ๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
'์ธ์ด > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] ๋ฉ๋ชจ๋ฆฌ ์์ญ ๊ทธ๋ ค๋ณด๊ธฐ _ 1์ฐจ ํด์ฆ (1) | 2023.03.20 |
---|---|
[C++] ํจ์ ์ค๋ฒ๋ก๋ฉ (0) | 2023.03.20 |
[C++] ํจ์ ์๋ฃ๋ฆฌํด (0) | 2023.03.20 |
[C++] ํจ์ ์๋ฃ์ ๋ฌ (0) | 2023.03.20 |
[C++] ํ๋ก๊ทธ๋จ์ ๊ฐ์ (0) | 2023.03.13 |