1

私はソケットを持っていて、それはクライアントから文字列を読み取り、テキストファイルで一致するものを検索します。

   vector<string> resultlist;
   int n;
   char* buffer = new char[256];

   bzero(buffer,256);
   n = read(sock,buffer,255);
   if (n < 0) error("ERROR reading from socket");
   printf("Here is the message: %s\n",buffer);
   readFile(buffer);
   string searchStr(buffer);
   for(int k=0; k<resultlist.size(); k++){
    if(resultlist[k].compare(searchStr)==0){ cout << resultlist[k+1] << endl; }
   }
   n = write(sock,"I got your message",18);
   if (n < 0) error("ERROR writing to socket"); 

したがって、基本的に、resultlistは文字列変数を含むベクトルであり、それが一致するかどうかを比較して、次の変数を表示したいと思います。しかし、私の比較は常に失敗します。

誰か助けてもらえますか?

4

1 に答える 1

2

ソケットから取得する文字列の末尾には、\rやなどの特殊文字が含まれている可能性が最も高い\nです。それらをチェックして、それらをきれいにしてください。

于 2012-11-25T09:01:19.367 に答える