2012-11-25 46 views
1

我有一個套接字,並從客戶端讀取一個字符串,然後搜索文本文件進行匹配。C++比較不起作用2緩衝區之間的字符串

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是包含字符串變量的載體,我想比較一下,看它是否匹配,然後顯示下一個變量。但是,我的比較總是失敗。

有人可以幫忙嗎?

+0

我試着將緩衝區傳遞給readFile進行比較,但它也不起作用。即使我在我的函數中將緩衝區轉換爲字符串後。 –

+0

那麼'printf(「這裏是消息:%s \ n」,緩衝區);'在控制檯上顯示? – WhozCraig

+0

如果客戶端鍵入「3g」,則顯示「這是消息:3g」。 –

回答

2

您從套接字獲得的字符串最可能在末尾包含特殊字符,如\r\n。檢查他們並清理出來。