我正在创建一个客户端-服务器聊天类应用程序,C++
我正在ncurses
. 我想将所有消息存储vector<char *> msgVector
到能够定期重绘整个屏幕。然而,当我想打印出这些值时,所有项目都具有相同的值 - 最后接受的消息。
void acceptMessages() {
char buffer[256];
fd = c->createClient2Fd("localhost", 12345);
while (true) {
memset(buffer, 0, sizeof ( buffer));
int l = recv(fd, buffer, sizeof ( buffer), 0);
msgVector.push_back(buffer);
redrawScreen();
}
void redrawScreen() {
erase();
mvhline(0, 0, ACS_HLINE, COLS);
mvhline(LINES - 2, 0, ACS_HLINE, COLS);
mvaddstr(LINES - 1, 0, "MESSAGE:");
move(LINES - 1, 9);
// prints right count of messages
// but on every line is printed only the last message
for (int i = 0; i != msgVector.size(); i++)
cout<<msgVector[i]<<endl;
move(LINES - 1, 9);
refresh();
}
所以可以说,接受的消息是:
1) Hello world!
2) My name is John
3) John Doe
4) Test message
然后我得到输出:
Test message
Test message
Test message
Test message
谁能解释一下,这可能是什么原因以及如何解决?