[CPP] swing 1-1 스터디 1주차

과제1
과제1
GitHub Repository

어제 하루종일 오류가 나서 애먹었는데 name 옆 숫자를 12로 바꾸었더니 해결되었습니다. name 옆 숫자는 무슨 역할을 하는건가요? 구글링을 해도 이해가 되지 않아서 질문드립니다. 또 std::endl;은 단독으로 쓸 수 없고 std::cout<<"홍길동전"<<endl; 이렇게 출력 뒤에 따라다녀야 되나요?

질문 해결되었습니다. 아래는 피드백 필기입니다.

괄호 안 변수 크기 측정

한글 - 한 글자에 2바이트
영어, 숫자 - 한 글자에 1바이트
계산해서 괄호 안에 변수 크기 집어넣어야 함

using namespace std;

std:: 사용할 필요 X

endl 단독 사용 가능

첫 시도에서 안됐던 이유는 std::endl;만 입력.
endl을 단독으로 사용할 때는 std::cout«endl;로 cout«를 빼먹지 말 것!!!!!!!!
(깃허브에 단독 사용해봄으로써 실습 진행)

과제2

CPP 1주차 과제2.pdf

재제출 분량 추가 학습

1. Cstring과 string 멤버 함수의 개념과 차이점

Cstring : MFC에서 문자열을 쉽게 처리할 수 있도록 제공해주는 클래스
MFC? 마이크로소프트에서 제공하는…
클래스? 데이터를 가지고 있으면서 함께 작동도 할 수 있는 기능 선언
문자열? 연속된 문자 집합

string 멤버 함수: C++ 표준 라이브러리에서 문자열을 쉽게 처리할 수 있도록 제공해주는 클래스

cstring과 string은 역할은 비슷하나 특징에서 차이가 있다.

선언 헤더의 차이
cstring은 #include string은 #include

문자 배열의 크기가 고정되어 있는 것이 Cstring
문자 배열의 크기가 유연하게 변하는 것이 string

스스로 느낀 점은 문자 배열 크기가 유동적으로 바뀌어서 그런가 string 멤버 함수에는 메모리와 크기를 따로 보고 크기 조절하는 멤버 함수도 많았다.

2. strcpy 실습(cout 사용)

#define CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    //str2의 크기>str1의 크기
    char str1[] = "helloworld";
    char str2[] = "himynameisnabi";

    //복사할 문자열을 뒤에
    strcpy_s(str2, str1);

    cout << "strcpy 썼더니 himynameisnabi가 " << str2 << "로 변했다.";

    return 0;
}

피드백대로 str2을 str1의 크기보다 크도록 설정해주고 strcpy 대신 strcpy_s를 사용했더니 실행되었다!!

3. strcat 실습(cout 사용)

#define CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    //str2 뒤에 str1이 들어갈 수 있게 넉넉히 크기 늘려주기(100)
    char str1[] = "helloworld";
    char str2[100] = "himynameisnabi";

    strcat_s(str2, str1);

    cout << "str2: " << str2;

    return 0;
}

strcat 말고 strcat_s를 사용해주니 실행되었다.