์ ๋ฒ ํฌ์คํ ์์๋ ํ์ค์ ์ถ๋ ฅ์ด ๋ฌด์์ธ์ง ๊ทธ๋ฆฌ๊ณ ํ์ค์ ์ถ๋ ฅ๊ณผ ํ์ผ์ ์ถ๋ ฅ์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ํด ์์๋ดค๋ค. ์ ํต์ ์ธ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ธฐ ๋๋ฌธ์ C++์ด ์๋ C ์ฝ๋๊ฐ ๋๋ถ๋ถ์ด์๋ค. ๋ชจ๋ C++์ด ๋์ค๋ฉด์ Standard library์์๋ iostream, ifstream, ofstream, stringstream๋ฑ์ stream ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๊ฐํธํ๊ฒ ์ง์ํ๋ค. ํ๋์ฉ ์ดํด๋ณด์.
๊ธฐ๋ณธ ์
์ถ๋ ฅ (Standard Input/Output)
C++์์ ๊ธฐ๋ณธ ์
์ถ๋ ฅ์ iostream ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ ์ ์๋ค. iostream์ ์
๋ ฅ ์คํธ๋ฆผ (istream)๊ณผ ์ถ๋ ฅ ์คํธ๋ฆผ (ostream)์ ์ ๊ณตํ๋ค.
istream (์ ๋ ฅ ์คํธ๋ฆผ)
`istream`์ ํ์ค ์
๋ ฅ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ์คํธ๋ฆผ์ด๋ค. ํค๋ณด๋๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅ๋ฐ์ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ๋ฒ์ std::cin์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
#include <iostream>
int main() {
int number;
std::cout << "์ ์๋ฅผ ์
๋ ฅํ์ธ์: ";
std::cin >> number;
std::cout << "์
๋ ฅ๋ ์ซ์: " << number << std::endl;
return 0;
}
์ ์ฝ๋์์ std::cin์ ์ฌ์ฉ์๋ก๋ถํฐ ์ ์๋ฅผ ์
๋ ฅ๋ฐ๋๋ค. ์
๋ ฅ๋ ์ซ์๋ number ๋ณ์์ ์ ์ฅ๋๊ณ , ์ดํ ์ถ๋ ฅ ์คํธ๋ฆผ์ธ std::cout์ ์ฌ์ฉํ์ฌ ์
๋ ฅ๋ ๊ฐ์ ์ถ๋ ฅํ๋ค.
ostream (์ถ๋ ฅ ์คํธ๋ฆผ)
ostream์ ํ์ค ์ถ๋ ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ์คํธ๋ฆผ์ด๋ค. ์ฃผ๋ก ์ฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ ๋ ์ฌ์ฉ๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ๋ฒ์ std::cout์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
#include <iostream>
int main() {
int number = 42;
std::cout << "์ซ์: " << number << std::endl;
return 0;
}
์ ์ฝ๋์์ std::cout์ ์ซ์๋ฅผ ์ถ๋ ฅํ๋ ์ญํ ์ ํ๋ค. << ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ๋ฌํ๋ค. ์ ์์ ์์๋ "์ซ์: "์ number ๋ณ์์ ๊ฐ์ ์ถ๋ ฅํ๊ณ , ๊ฐํ ๋ฌธ์ std::endl์ ํตํด ์ค์ ๋ฐ๊พผ๋ค.
ํ์ผ ์ ์ถ๋ ฅ (File Input/Output)
C++์์ ํ์ผ ์
์ถ๋ ฅ์ fstream ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ ์ ์๋ค. fstream๋ ํ์ผ์ ์ฝ์ด์ค๊ฑฐ๋ ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ธ ๋ ์ฌ์ฉ๋๋ค. fstream๋ ifstream (์
๋ ฅ ํ์ผ ์คํธ๋ฆผ)์ ofstream (์ถ๋ ฅ ํ์ผ ์คํธ๋ฆผ) ๋ ๊ฐ์ง ํด๋์ค๋ก ๊ตฌ์ฑ๋๋ค.
ifstream (์ ๋ ฅ ํ์ผ ์คํธ๋ฆผ)
ifstream์ ํ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ์คํธ๋ฆผ์ด๋ค. ํ์ผ์ ๋ด์ฉ์ ์ฝ์ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค. ๋ค์์ ํ์ผ์์ ์ซ์๋ฅผ ์ฝ์ด์ ์ถ๋ ฅํ๋ ์์ ๋ค.
#include <fstream>
#include <iostream>
int main() {
std::ifstream file("data.txt");
if (file.is_open()) {
int number;
while (file >> number) {
std::cout << "์ฝ์ ์ซ์: " << number << std::endl;
}
file.close();
} else {
std::cout << "ํ์ผ์ ์ด ์ ์์ต๋๋ค." << std::endl;
}
return 0;
}
์ ์ฝ๋์์ std::ifstream๋ data.txt ํ์ผ์ ์ด์ด file ๊ฐ์ฒด๋ก ์ฌ์ฉํ๋ค. is_open() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ด ์ ์์ ์ผ๋ก ์ด๋ ธ๋์ง ํ์ธํ ํ, ํ์ผ์์ ์ซ์๋ฅผ ์ฝ์ด์ ์ถ๋ ฅํ๋ค.
ofstream (์ถ๋ ฅ ํ์ผ ์คํธ๋ฆผ)
ofstream์ ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ์คํธ๋ฆผ์ด๋ค. ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉ๋๋ค. ๋ค์์ ์ซ์๋ฅผ ํ์ผ์ ์ ์ฅํ๋ ์์ ์ด๋ค.
#include <fstream>
#include <iostream>
int main() {
std::ofstream file("data.txt");
if (file.is_open()) {
int number = 42;
file << "์ซ์: " << number << std::endl;
file.close();
} else {
std::cout << "ํ์ผ์ ์ด ์ ์์ต๋๋ค." << std::endl;
}
return 0;
}
์ ์ฝ๋์์ std::ofstream๋ data.txt ํ์ผ์ ์ด์ด file ๊ฐ์ฒด๋ก ์ฌ์ฉํ๋ค. is_open() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ด ์ ์์ ์ผ๋ก ์ด๋ ธ๋์ง ํ์ธํ ํ, << ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํ์ผ์ ์ ์ฅํ๋ค.
stringstream
stringstream์ ๋ฌธ์์ด์ ์คํธ๋ฆผ์ผ๋ก ๋ค๋ฃฐ ์ ์๊ฒ ํด์ฃผ๋ ํด๋์ค์ด๋ค. stringstream์ istream๊ณผ ostream์ ๊ธฐ๋ฅ์ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋ค. ๋ค์์ stringstream์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ์ซ์๋ก ๋ณํํ๋ ์์ ๋ค.
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string input = "42";
std::stringstream ss(input);
int number;
ss >> number;
std::cout << "๋ณํ๋ ์ซ์: " << number << std::endl;
return 0;
}
์ ์ฝ๋์์ std::stringstream์ input ๋ฌธ์์ด์ ์คํธ๋ฆผ์ผ๋ก ๋ค๋ฃฐ ์ ์๊ฒ ํ๋ค. >> ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์คํธ๋ฆผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ number ๋ณ์์ ์ ์ฅํ ํ, ์ถ๋ ฅํ๋ค.
์ด์์ผ๋ก C++์ Standard Library๋ฅผ ์ฌ์ฉํ ๊ธฐ๋ณธ ์
์ถ๋ ฅ๊ณผ ํ์ผ ์
์ถ๋ ฅ์ ๋ํด ์์๋ณด์๋ค. istream, ostream, ifstream, ofstream, stringstream์ ํ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ์
์ถ๋ ฅ์ ๋ค์ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค. ๋ ๋ง์ ๊ธฐ๋ฅ๊ณผ ์ฌ์ฉ๋ฒ์ ์๊ณ ์ถ๋ค๋ฉด C++ ๋ฌธ์๋ ์์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด๋ณด๊ธธ ๋ฐ๋๋ค.
https://en.cppreference.com/w/cpp/io/basic_ifstream
https://en.cppreference.com/w/cpp/io/basic_ofstream
https://en.cppreference.com/w/cpp/io/basic_stringstream
'ํ๋ก๊ทธ๋๋ฐ ์ธ์ด > C++ ๊ธฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] 15. ํด๋์ค(class)์ ๊ตฌ์กฐ์ฒด(struct) (0) | 2023.06.09 |
---|---|
[C++] 14. ์ฐธ์กฐ์(Reference) (0) | 2023.06.02 |
[C++] 13-1. ์ ์ถ๋ ฅ(feat. ํ์ค์ ์ถ๋ ฅ๊ณผ ํ์ผ์ ์ถ๋ ฅ) (2) | 2023.05.17 |
[C++] 12. ๋ฌธ์์ด(feat. ์ง๋ ฌํ) (0) | 2023.05.06 |
[C++] 11. ํจ์(feat. ์ ์ญํจ์, ๋ฉค๋ฒํจ์, ์ ์ ํจ์, ๋๋คํจ์) (0) | 2023.04.28 |
๋๊ธ