-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
강의 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에 상대방이 보낸메세지가 더 없다는 것을 확인하는 것은 어떻게 구현할 수 있을까요?
귀한 조언 부탁드립니다.
감사합니다.
답변을 작성해보세요.
0
안소
2021.01.07
안녕하세요!
제가 Boost.Asio를 몇 번 접해본적이 없는지라 깊게 알지는 못합니다. ㅠㅠ
A가 B에게 메세지를 보내고나서 A가 B로부터 그동안 받은 메세지들을 전부 출력하려고 하신다는 말씀이실까요?
그러려면 일단 여태 B로부터 받은 string 메세지들을 A에서 전부 vector<string> 같은 컨테이너에 저장을 하고 있어야 할 것 같고 while문을 그 vector를 처음부터 끝까지 순회하면서 string 원소들에 접근해 출력하는 식으로 하면 어떨까요?
무한 반복이 된다는 것은 조건식이 stream이 false 혹은 0 이 되지 않는다는 의미이므로 A입장에서의 솔루션을 디버깅 해보시면서 stream 값이 어떻게 달라지는지 어떤 상태가 되는지를 살펴보시고 반복 조건식을 다시 세워보시는게 좋을 것 같습니다.
답변 1