在进行tcp通信时,在c ++中使用字符串格式的问题

时间:2010-12-25 16:50:11

标签: c++

我正在构建一个简单的c ++客户端,我将从服务器获取的信息拆分为帧,并将每个帧传递给处理它的函数,我使用

将帧拆分为行
Poco::StringTokenizer tokenizer(frame, "\n");

我选择了表示帧类型的标记器的第一行

 StmpCommand command(tokenizer[0]);

StmpCommand是一个包含不同类型消息的枚举 构造函数的工作原理如下:

StmpCommand(std::string command): commandType_() {
  bool x=command=="CONNECTED";
  std::cout<<x<<std::endl;
  if ("SUBSCRIBE" == command)
   commandType_ =  SUBSCRIBE;
  else if ("UNSUBSCRIBE" == command)
   commandType_ =  UNSUBSCRIBE;
  else if ("SEND" == command)
   commandType_ =  SEND;
  else if ("BEGIN" == command)
   commandType_ =  BEGIN;
  else if ("COMMIT" == command)
   commandType_ =  COMMIT;
  else if ("CONNECT" == command)
   commandType_ =  CONNECT;
  else if ("MESSAGE" == command)
   commandType_ =  MESSAGE;
  else if ("RECEIPT" == command)
   commandType_ =  RECEIPT;
  else if ("CONNECTED" == command)
   commandType_ =  CONNECTED;
  else if ("DISCONNECT" == command)
   commandType_ =  DISCONNECT;
  else if ("ERROR" == command)
   commandType_ =  ERROR;
  else {
   std::cerr<<"Error in building StmpCommand object, unknown type - "<<command<<std::endl;
  }
 }

我试图处理的第一帧是一个CONNECTED帧 因此,我尝试使用CONNECTED创建一个StmpCommand作为构造函数的唯一参数 由于某种原因,我得到了:

Error in building StmpCommand object, unknown type - �CONNECTED

我正在传递一个包含CONNECTED的字符串,但我猜测还有其他东西不允许其他情况if(“CONNECTED”== command)to hap

1 个答案:

答案 0 :(得分:0)

似乎你在命令的开头有一个迷路的角色。 “ CONNECTED”在这里显示为CONNECTED,这意味着至少有一个不可显示的角色。