C++ 将数据从向量传输到队列并关闭
我有一块遗留代码,我正试图为其实现一个队列。总的来说,我的类中有一个消息接收器函数,它执行以下操作:C++ 将数据从向量传输到队列并关闭,c++,vector,queue,C++,Vector,Queue,我有一块遗留代码,我正试图为其实现一个队列。总的来说,我的类中有一个消息接收器函数,它执行以下操作: void RCVER::receiveMessage(const std::vector<char> &incomingMessage) { int size = incomingMessage.size(); msgQ.push(incomingMessage); std::cout << "Received msg of
void RCVER::receiveMessage(const std::vector<char> &incomingMessage) {
int size = incomingMessage.size();
msgQ.push(incomingMessage);
std::cout << "Received msg of size: " << size << std::endl; //THIS IS GOOD
for(size_t i = 0; i < size-1; i++)
{
std::cout << incomingMessage[i] << std::endl; //DATA IS GOOD HERE
}
}
void RCVER::receiveMessage(const std::vector&incomingMessage){
int size=incomingMessage.size();
msgQ.push(输入消息);
std::您能验证消息中的数据是否有效吗?如果都是0呢?我已经在receiveMessage中验证了数据是否有效。并且正确的字节数打印在getMessage
?1.队列中是否只有一个条目?是否您的数据在别处?2.无论如何,您返回的是指向本地v的指针从您的RCVER::getMessage
;可以更改,这可能会在以后导致崩溃。getMessage中返回的字节与打印时一样正确。就Vlad而言,我们没有崩溃,因为我的队列中只有一个条目。我想另一个点也会是-有更好的方法吗?我觉得不舒服ortable假设队列中只有一个实体。我的解决方案是循环执行此操作并发送每条消息,直到队列为空,但是,我希望此操作正常。总的来说,您认为此代码正确吗?
void RCVER::getMessage(const char* data, int &bytes)
{
std::vector<char> tmp;
if(!msgQ.empty())
{
tmp = msgQ.front();
bytes = tmp.size();
data = &tmp[0];
msgQ.pop();
std::cout << "Pulled msg of size: " << bytes << " off of the queue." << std::endl; //THIS IS GOOD
if(DEBUG)
{
for(size_t i = 0; i < bytes-1; i++)
{
std::cout << data[i] << std::endl; //NOT GOOD - PRINTS BLANK LINES
}
}
}