초보자를 위한 C++ 200제 독자를 위한 Q&A 공간입니다.

초보자를 위한 C++ 200제 독자를 위한 Q&A 공간입니다.


초보자를 위한 C++ 200제 독자를 위한 Q&A 공간


이곳이 저와 여러분들이 소통하는 자리가 되었으면 좋겠습니다.


책의 내용과 관련하여 궁금한 점이나 묻고 싶은 내용은 아래 댓글로 질문해주세요.

질문은 공개 댓글로 해주셔야 많은 분들에게 공유할 수 있다는 것도 참고해주세요.


※ 로그인하지 않고 비밀 댓글을 다시면 본인도 댓글을 확인할 수 없습니다.


질문에 대한 답변은 저 뿐만 아니라 저보다 지식이 많은 분들께서 해주셔도 됩니다.

제가 잘못알고 있거나 모르는 부분도 있으니깐요.


첨부 파일은 초보자를 위한 C++ 200제 책에 수록된 모든 소스코드입니다.


본문 소스 코드 30MB - 다운로드 [링크]


C++의 대가가 되는 그날까지 파이팅입니다~!


c++ 공부 책 200제 박준태


초보자를 위한 C++ 200제 독자를 위한 Q&A 공간입니다.

이 글을 공유하기

댓글(46)

  • 이준우
    2018.06.19 17:52

    namespace와 struct의 차이점이 무엇인가요??
    책의 내용중에 silla::year, baekjae::year을 구조체로도 사용할 수 있다고 생각돼서 질문합니다

    • 2018.06.20 00:15 신고

      http://codingcoding.tistory.com/859

      여기에 따로 포스트 남겼습니다. 제 설명이 부족했다면 죄송스럽지만 어느 부분 설명이 더 필요한지 말씀해주세요.

    • 이준우
      2018.06.21 19:51

      답변 감사합니다.
      둘의 차이점을 명확히 알겠네요.

      아 그리고 또 질문이 있는데요

      초급 50 예제에 추가하신 algorithm
      헤더는 예제의 어느 부분에서 사용되는건가요??

      random 헤더는 random_shuffle 함수 때문에 추가하신것 같은데 algorithm은 잘 모르겠네요...

    • 2018.06.22 13:04 신고

      삭제하셔도 됩니다. 불필요한 부분이네요. 해당 사항은 아래 정오표에 추가했습니다.

      http://codingcoding.tistory.com/850

  • 이준우
    2018.06.23 01:20

    Call by Reference와 Call by Address를 공부 하는 중 질문이 생겼습니다.
    둘의 공통점은 Call by Value와 달리 주소의 값을 직접 바꾸는 것이고,
    차이점은 *를 인자로 주면 4바이트 크기이고 &를 인자로 주면 자료형의 크기를 넘긴다는것 같은데,
    어떤 때 *를 넘기고 어떤 때 &를 넘기나요??

    • 2018.06.24 23:56 신고

      http://codingcoding.tistory.com/866

      따로 포스팅 남겼습니다. 추가로 궁금한 점은 언제든 댓글로 알려주세요.

  • 이준우
    2018.06.26 17:20

    위 답변 감사합니다 궁금증이 풀렸네요.
    또 질문이 있습니다만, 지금 클래스 관련 예제를 보고 있는 중인데요?
    왜 하나의 클래스 안에 public이 여러개 있는건가요?
    class exClass
    {
    public:
    함수1() {};
    public:
    함수2() {};
    };

    • 2018.06.26 17:28 신고

      아, 그건 제 코딩 습관 때문인데요. 사실 별게 아닙니다.

      예를 들어 볼게요. Human이란 클래스가 있습니다. 나이, 생년월일, 태어난 시간 등 생년에 관련된 변수가 있습니다.

      그리고 키, 몸무게, 성별, 시력 등 신체 조건과 관련된 변수가 있습니다.

      저는 이럴 경우 굳이 public 또는 private를 따로 선언하여 분리합니다. 섞여있는 것 보단 유형별로 분리하는 것을 선호합니다.

      그냥 제 코딩 습관입니다. 사소한 부분이긴한데 회사마다 코딩 룰을 다르게 두니깐 그 회사에 맞춰서 하면 돼요. 저는 최근 회사 룰이 저래서 지금도 저게 익숙하네요.

    • 이준우
      2018.06.26 18:07

      그리고 110번 예제 보는 중에 궁금한게 생겼는데요?
      class 안에서 변수에 메모리를 동적 할당/해제 하셨는데,
      혹시 변수 메모리 할당만하고 class 자체를 delete하면 할당된 변수의 메모리도 해제되나요??

    • 이준우
      2018.06.26 20:26

      class Rent
      {
      };
      class Landload : public Rent
      {
      };
      간단하게 표현했는데요.
      Rent가 부모인가요? Landload가 부모인가요?
      제 생각은 landload가 rent를 포함하니까 landload가 부모라고 생각되는데요..?

    • 2018.06.26 21:03 신고

      1. 혹시 예제 115번 말씀하시는 거라면 http://codingcoding.tistory.com/845 이 포스트 참조해 주세요. 오타가 너무 많아서 예제랑 설명글 다시 올렸습니다.

      2. 110번 예제에 대해선 다음 포스트 참조해 주세요. http://codingcoding.tistory.com/873

      언제나 처럼 궁금한 건 댓글로 알려주세요. 아는 범위 안에서 성심성의껏 알려드리겠습니다.

  • 알밧트
    2018.12.22 17:15

    85 - 2차원 배열 다루는 방법 예제가 잘못된거 같네요.
    해당 예제의 Fucn3은 초보 개발자에게 잘못된 예제를 제공해주신 것으로 보이네요.
    큰 오해를 불러 일으킬 수 있다고 생각합니다.
    저런 식으로 2차원 배열을 포인터로 받아서 처리할 수 있다고 배우게 되면 안됩니다. 저런식으로 이해하고 가느니 차라리 안쓰는게 낫습니다.
    해당 내용이 삭제가 되던, 아니면 별도 예제를 추가해주셔야 된다고 생각합니다.

  • 예제 초급53
    2019.03.09 12:02

    string seven_war = "임진왜란";
    string korea_war = "한국전쟁";

    if (seven_war.compare(korea_war) == 0)
    cout << "같은 문자열\n";
    else
    cout << "다른 문자열\n";

    예제처럼 쓰고 실했더니, 결과가 다르게 나오더라구요.
    위 예제는 수정한 부분입니다.
    같은문자열, 다른문자열이 책에는 반대로 쓰여있네요..

  • 예제 초급61
    2019.03.09 13:51

    include 한부분에서 algorithm이 빠졌네요.

  • 예제 초급65
    2019.03.13 13:50

    sort 함수를 사용하기위해서
    <algorithm>을 include 해야하는데 빠져있습니다.

  • 예제 중급 93
    2019.03.21 14:50

    txt 파일을 읽어오는 부분인데요, 한글이 물음표로 나옵니다.
    어떻게 해결해야하나요??

    • 2019.03.21 16:10 신고

      txt 파일을 ansi로 바꿔주세요.

      메모장 - 다른이름으로저장 - ansi 선택하면 됩니다.

      왜 그런진 http://riniblog.egloos.com/995731 이 포스트 읽어주세요.

      핵심만 발췌하면,

      1. 한글 윈도우에서 사용하는 코드 페이지는 CP949이며 EUC-KR 인코딩을 확장한 형태
      2. 한글 윈도우에서는 CP949로 인코딩
      3. 두 인코딩은 서로 호환이 되지 않기 때문에 단순히 값을 복사하면 다 깨진다.
      그래서 MultiByteToWideChar과 WideCharToMultiByte라는 함수를 지원한다.

  • 예제 중급 93
    2019.03.21 18:52

    txt 파일을 ansi로 바꿔서 저장했습니다만.. 그래도 물음표로 나와버리네요..
    뭐가 문제인걸까요..

  • 예제 중급 93
    2019.03.22 14:01


    #include <locale>

    setlocale(LC_ALL, "Korean";);

    이렇게 두줄을 추가하니까 한글이 나오기는 나오네요..

    • 2019.03.22 15:24 신고

      그렇게 사용하면 전체 언어 설정이 바껴서 다른 언어로 읽을 땐, 그때마다 로케일을 또 바꿔야 합니다. 별로 추천하는 방법은 아닌데 .....

    • 예제 중급 93
      2019.03.22 15:37

      txt 파일도 ansi인거 확인했었고.. utf-8도 해보고.. 있는걸 다 해봤는데도 한글만 물음표로 나오더라구요.

      이런경우에는 프로젝트 설정 문제일까요?

    • 2019.03.22 15:41 신고

      텍스트 파일을 제 이메일로 보내주세요. 저도 파일을 봐야 압니다.

      민감한 내용이 들어있다면 파일 복사하여 일부 내용만 담아서 보내주세요.

    • 예제 중급 93
      2019.03.22 15:51

      민감한 내용이라고 하기보다는..
      올려주신 예제 압축폴더에 들어있던
      txt 파일이라서요.. 똑같은 파일입니다..

      ==================
      참 이상한게 95번 예제 할때는 또 한글이 잘나오네요..( 95번 예제 txt 파일도 압출폴더에 있던 파일입니다. )
      이유가 뭘까요..?

    • 2019.03.22 16:43 신고

      프로젝트랑, txt 파일 보내주세요. 말씀만 듣고는 모릅니다.

    • 예제 중급 93
      2019.03.22 17:04

      프로젝트가 있는 폴더를 압축해서 보냈습니다.
      이렇게 보내는게 맞는건지 싶지만요..

      물음표로 나오는것도 캡쳐해서 사진첨부했습니다.

    • 2019.03.22 17:46 신고

      살다보면, 내 자리에선 되는데 왜 남의 자리에선 안 될까 싶어, 고민하는 일들이 생깁니다.

      집, 회사에서 님이 보내주신 소스는 잘 돌아갑니다. 텍스트 파일에도 이상은 없고요. 그럼에도 전 되는데 왜 님은 안될까요.

      제가 님 PC 앞에 앉아 설정들을 비교하며 꼼꼼하게 살펴보지 않는 이상 이런 에러는 원인을 찾기 너무 힘듭니다.

      소스 코드 문제라면 제가 바로 답해드릴 수 있으나, 설정 문제로 발생하는 문제는 답변드리기 정말 곤란하네요.

      죄송합니다. 이 부분에 대해선 저도 명쾌하게 드릴 말씀이 없네요.

    • 예제 중급 93
      2019.03.22 17:54

      답변 감사합니다.

  • 예제 51번
    2019.07.02 18:31

    예제 51번 코드를 따라했는데요. localtime이 unsafe하다고 localtime_s로 하라고 하네요. 그런데 그렇게 하니까 localtime_s의 매개변수는 1개만 쓰는게 아니라고 하면서 실행이 안됩니다. 어떻게 해야하나요?

    • 2019.07.04 11:13 신고

      #pragma warning(disable : 4996)

      우선 using namespace std 아래에 위 코드를 넣어주세요.

      비주얼스튜디오 최신 버전에선 오류네요... 자세한 건 나중에 따로 포스팅하겠습니다.

      요즘 ... 참 힘드네요 ... ㅠ 조금만 기다려주세요.

    • 예제51번
      2019.07.04 17:32

      답변 주셔서 감사합니다. 천천히 포스팅 해주셔도 됩니다.ㅋㅋㅋ힘내세요~!

  • 중급 74번
    2019.08.29 14:18

    call by value는 인자로 넘어온 값을 내부적으로 복사해 사용한다고 되어있습니다. 이게 무슨 원리인지 이해가 안됩니다. 왜냐하면 그 뒤에 'year변수에 직접 10을 더한 것이 아니라 내부적으로 복사한 값에 10을 더한 셈입니다.' 라는 말이 있습니다. 그러면 year변수가 인자로 넘어간 이유는 그저 Func함수를 활성화시키기 위함인건가요? 함수의 작동순서도 이해가 안되네요;;

    • 2019.08.31 16:08 신고

      void Func(int arg)

      이 함수는 16번 라인을 통해 main() 함수의 year 10값을 전달 받습니다.

      "내부적으로 복사"한다는 뜻은 int arg에 10이란 값이 할당된다는 겁니다.

      그래서 변경 전 arg는 10이었지만, 8번 라인을 통해 20이 되었고 9번 라인을 통해 20이 출력됨을 확인할 수 있습니다.

      하지만 14번 라인에 선언된 year 값은 16번 라인 Func 함수 호출 이후에도 10이란 값이 유지됩니다.

      이는, 뒤에 나오는 call by reference와 차이점을 보이기 위한 예제입니다.

  • 입문1, 입문10
    2019.10.17 14:04

    안녕하세요.
    c++ 입문서로 구입해서 잘 보고 있어요.

    23p, std:: cout << " ~ " << endl;
    : endl; => std:: endl;

    40p, 9 각 괄호 안에는 변수를 이용해 크기를 지정할 수 있고, [3] 처럼 직접 정수를 삽입할 수도 있습니다.
    : 변수 -> 상수

    오타 혹은 틀린 내용이 있는것 같아서요.
    제가 고친게 맞을까요?

    감사합니다.

    • 2019.10.20 14:58 신고

      네 맞습니다. 지적해 주셔서 감사합니다!!!

      https://codingcoding.tistory.com/850

      책 정오표에 반영했습니다.

      다시 한 번 감사하다는 말씀 드립니다.

  • 023, 025
    2019.10.21 17:57

    안녕하세요.

    65p, 10번 라인 설명
    2가 출력 됩니다. 12라인과 마찬가지로 먼저 사용한 뒤 증가합니다.
    12라인 -> 9라인
    12라인은 더 뒤에 라인이기도 하고 감소하는 것 같습니다.

    68p, 13라인
    if(is_x = ture && is_y = true)
    -> if(is_x == ture && is_y == true)

    이렇게 고치면 될까요?
    감사합니다.

    • 2019.10.22 23:42 신고

      네 모두 오타입니다. ㅠㅠ

      https://codingcoding.tistory.com/850

      정오표에 반영했습니다. 지적해 주셔서 감사합니다.

  • 26 삼항연산자
    2019.10.21 18:12

    안녕하세요.

    71p, 삼항연산자 질문 드립니다.

    z = x > y ? x : y ;

    에서 z는 1항, x>y는 2항, x:y을 3항이라고 설명해주셨습니다.

    저는 x > y 가 1항, (?), x 가 2항, (:), y가 3항 인 것으로 알고있습니다.

    z = k, (k : 삼항연산의 결과) 로 보면

    z 와 삼항 연사자 의 결과 사이의 이항연산자 =가 사용된 것으로 생각했습니다.


    z를 1항으로 보는게 맞는 것 인가요?


    감사합니다.

    • 2019.10.22 23:43 신고

      이 부분은 제가 잘못 이해하고 있었네요. 님 말씀이 맞습니다.

      https://codingcoding.tistory.com/850

      나중에 님이 좋아하는 거 배부르게 사드릴게요. 감사합니다.

  • 035, 039
    2019.10.31 23:15

    안녕하세요.

    88p, 라인번호와 설명이 맞지 않습니다.
    87p, 8번 라인이 9번까지 넘어가면서 발생한 문제 같습니다.

    95p, 2번째 줄 while이 whie로 적혀있습니다.


    그런데 정말 맛잇는거 사주시나요?


    감사합니다.

    • 2019.11.02 20:00 신고

      감사합니다 "035,039님"~!!!!!

      "26삼항연산자님"처럼 꼼꼼하게 오타 지적해주셔서 감사합니다. 제가 너무 감사하여 두분에게 맛난거 사드리고 싶네요. ㅎㅎ

      감사합니다!!!!! 날짜 잡으세요!! 근데 두분 .... 먼저 연락해서 날짜 조율 해보세요.

  • p254 type_trais 사용하기3(conditional)
    2019.11.20 17:26

    기존의 코드가
    template <typename T1, typename T2>
    string TmpFunc(T1 x, T2 y)
    {
    conditional<is_same< T1, T2>::value, int, double >::type type1;

    return typeid(type1).name();
    }

    이렇게 되있었으나 이를 빌드하면 에러가 뜨고

    template <typename T1, typename T2>
    string TmpFunc(T1 x, T2 y)
    {
    typename conditional<is_same< T1, T2>::value, int, double >::type type1;

    return typeid(type1).name();
    }
    이렇게 하면 에러가 사라집니다.

    어떤 이유인지 궁금합니다.

Designed by JB FACTORY