• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

강의 29분 30초 구현에 대해 질문드립니다.

21.01.07 20:04 작성 조회수 142

0

강의 29분 30초에 주문하신 기능을 구현하고자 많은 고민을 해 보았습니다.

우선 상대방에게 제 메세지를 보내고

getline(cin, message);

stream <<message;

stream << std::endl;

그동안  상대방이 보낸 메세지를 모아서 아래와 같이 한꺼번에 출력 하고자 했습니다.

while (stream)

{

std::getline(stream, line);

stringstream << line;

}

std::cout << stringstream.rdbuf()<<std::endl;

그런데 문제는 while문이 무한 반복된다는 것이었습니다.

stream에 상대방이 보낸메세지가 더 없다는 것을 확인하는 것은 어떻게 구현할 수 있을까요?

귀한 조언 부탁드립니다.

감사합니다.

 

답변 1

답변을 작성해보세요.

0

안소님의 프로필

안소

2021.01.07

안녕하세요!

제가 Boost.Asio를 몇 번 접해본적이 없는지라 깊게 알지는 못합니다. ㅠㅠ

A가 B에게 메세지를 보내고나서 A가 B로부터 그동안 받은 메세지들을 전부 출력하려고 하신다는 말씀이실까요?

그러려면 일단 여태 B로부터 받은 string 메세지들을 A에서 전부 vector<string> 같은 컨테이너에 저장을 하고 있어야 할 것 같고 while문을 그 vector를 처음부터 끝까지 순회하면서 string 원소들에 접근해 출력하는 식으로 하면 어떨까요?

무한 반복이 된다는 것은 조건식이 stream이 false 혹은 0 이 되지 않는다는 의미이므로 A입장에서의 솔루션을 디버깅 해보시면서 stream 값이 어떻게 달라지는지 어떤 상태가 되는지를 살펴보시고 반복 조건식을 다시 세워보시는게 좋을 것 같습니다.