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
       }
  }
}