시작은 언제나 헬로 월드 코딩으로, 첫 글에서는 Visual Studio Code와 C++ 확장 기능을 이용해 이 간단한 코드가 어떻게 여러분을 프로그래밍의 세계로 안내하는지 보여드리겠습니다. C++로 작성된 이 예제는 메시지 벡터를 순회하며 단어들을 출력합니다.
▶▶세팅을 위한 기초가 필요하신 분들은 “Microsoft C++용 VS Code 구성” 글을 꼭 참고 하시기 바랍니다.
1. 헬로 월드 코딩은 너무 유명해!!!
그러면 우리가 작성해볼 헬로 월드 코딩을 구경해 볼가요?
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
for (const string& word : msg)
{
cout << word << " ";
}
cout << endl;
}
#include
지시문은 프로그램에 필요한 헤더 파일을 포함시킵니다. 여기서는 입출력 관련 기능을 위한<iostream>
과, 벡터 컨테이너를 위한<vector>
, 그리고 문자열 사용을 위한<string>
헤더 파일을 포함시키고 있습니다.using namespace std;
는 표준 라이브러리의 모든 요소를 기본 네임스페이스로 설정합니다.main()
함수는 프로그램의 진입점으로, 실행 시 가장 먼저 호출되는 함수입니다.vector<string> msg {...};
는string
객체들의 벡터를 초기화합니다. 이 경우 “Hello”, “C++”, “World”, “from”, “VS Code”, “and the C++ extension!”라는 문자열들로 초기화됩니다.- 벡터
msg
에 대한 범위 기반for
루프는 각word
를cout
을 통해 출력하고, 각 단어 뒤에 공백을 추가합니다. - 마지막으로
cout << endl;
은 줄바꿈을 출력하여, 모든 단어가 한 줄에 출력된 후 다음 줄로 커서를 이동시킵니다.
2. 헬로 월드 코딩 속 using namespace std;
using namespace std;
는 C++ 프로그램에서 std
네임스페이스에 정의된 모든 요소(함수, 객체, 변수 등)에 대해 네임스페이스 접두사(std::
)를 생략할 수 있게 해주는 선언문입니다. 예를 들어, std::cout
대신 cout
을 직접 사용할 수 있게 됩니다. 이는 코드를 좀 더 간결하게 작성할 수 있게 해주지만, 큰 프로젝트에서는 다른 라이브러리와의 이름 충돌 가능성 때문에 피하는 것이 좋습니다.
3. vector<>은 무엇?
는 C++ 표준 템플릿 라이브러리(STL)의 일부로, 동적 배열 기능을 제공하는 컨테이너 클래스입니다.
vector<>vector<>
는 꺾쇠괄호 안에 타입을 지정하여 사용하며, 이를 통해 해당 타입의 객체들을 순차적으로 저장할 수 있습니다. 예를 들어, vector<int>
는 int
타입의 동적 배열을 생성하고, vector<string>
은 string
객체들을 저장합니다.
vector
는 자동으로 메모리를 관리해주며, 요소를 추가하거나 제거할 때 자동으로 크기를 조정합니다. 배열과 비교했을 때 vector
는 크기가 고정되어 있지 않고, 필요에 따라 동적으로 확장되거나 축소될 수 있습니다. 이는 push_back()
, pop_back()
, resize()
, clear()
등의 멤버 함수를 통해 구현됩니다.
vector
는 또한 임의 접근 반복자(random-access iterators)를 제공하므로, 배열처럼 인덱스를 사용한 직접 접근이 가능하며, begin()
과 end()
멤버 함수를 사용하여 범위 기반의 for
루프나 알고리즘과 함께 사용될 수 있습니다.
4. printf와 std::cout의 차이점은?
와
printfstd::cout
는 C++에서 출력을 처리하는 두 가지 다른 방법입니다:
printf
는 C 언어에서 유래된 함수로, 포맷 스트링을 사용하여 다양한 데이터 타입을 서식화하여 출력합니다. 사용법은 더 복잡할 수 있으며, 타입 안전이 보장되지 않습니다.std::cout
은 C++의 표준 입출력 스트림 라이브러리의 일부로, 오버로딩된<<
연산자를 사용하여 타입 안전성을 제공하고, 객체 지향적인 방법으로 출력을 제공합니다.
std::cout
는 타입 안전성과 사용의 편리함 때문에 C++에서 권장되는 방식입니다. 반면 printf
는 레거시 코드나 특정 포맷팅 요구사항이 있는 경우에 여전히 사용됩니다.
부록. 빌드에 문제를 격게되면!
혹시나 Visual Studio Code의 오른쪽 아래에 다음과 같은 오류를 만나면↓
cl.exe라고 하는 것의 설정을 완료해야 합니다. Visual Studio 2022용 빌드 도구 다운로드받아서 설치해야 합니다. ↓