while (true)
{
int read = recvData(clientSocket, buf, sizeof(buf));
if(read == SOCKET_ERROR)
{
cout<<"Connection with the server is lost. Do you want to exit?" << endl;
string input;
getline(cin,input);
if(input == "yes")
cout<<"test";
}
if(read == SHOW )
{
char *p = strtok(buf, " ");
while (p)
{
cout<<p<<endl;
p = strtok(NULL, " ");
}
}
else if(read == SEND )
{
UDPinfo* info = new UDPinfo;
char *p = strtok(buf, " ");
info->_IP = p;
p = strtok(NULL, " ");
info->_Port= p;
info->_filePath = filePath;
info->_UPDsock = UDPSocket;
//Starting UDP send thread.
_beginthread(UDPsendThread, 0, (void*)info);
}
}
в этом примере, если я получаю ошибку сокета, я любезно спрашиваю пользователя, хочет ли он выйти из программы, получив ввод. А затем сравнение этого ввода с каким-либо другим значением, в данном случае это строка «да». Но по какой-то причине, даже если я набираю «да», он пропускает проверку «если». и печатает "Соединение с сервером потеряно. Вы хотите выйти?" опять таки. Странно то, что если я снова наберу «да», все сработает. Я попытался исправить это с помощью cin.ignore(); и все такое прочее, а решения нет.
getline
внутри цикла? - person iammilind   schedule 07.07.2011