我试图在数组中搜索来自服务器java的值。服务器在点击按钮后发送数据,并将此值接收到estratto
这是一个char数组。
我需要在字符串数组estratto
或字符串变量numeri
中找到number
。
我该怎么做?
这是我的代码:
char estratto[2048];
int pos=-1;
char message[2048] = "";
//-- some code
while(recv(sock, buff, sizeof(buff),0) > 0){
strcat(message,buff); // received message form client
}
//-- some code
//-- divided message into a string array
istringstream iss(message);
string token;
string numeri[15];
int i=0,j=0,e=0;
while (std::getline(iss, token, ','))
{
numeri[i]= token.c_str();
i++;
}
//-- the part that has problems
string number(message);
while(recv(sock, estratto, sizeof(estratto),0)>0){
for(i=0; i<15; i++){
pos=number.find(estratto);
if(pos>0)
cout<<"TROVATO!"<<endl;
if(strcmp(numeri[i].c_str(),estratto)==0){
trovati_cartella[i]=1;
cout<<"TROVATO!"<<endl;
}
}
}
cout&lt;&lt;&#34; Trovato!&#34; &LT;&LT;如果我尝试更改此代码的某些部分,则endl; 不起作用。有人可以帮我找到解决方案吗?
答案 0 :(得分:0)
您是否遇到了无符号vs签名字符集问题。您可能需要使用64位编码标准对字符串进行编码和解码。
答案 1 :(得分:-1)
我会像这样修改代码:
while(recv(sock, estratto, sizeof(estratto),0)>0){
for(i=0; i<15; i++){
pos=number.find(estratto);
if(pos != std::string::npos)
cout<<"TROVATO!"<<endl;
if(strstr(numeri[i].c_str(),estratto) != NULL){
trovati_cartella[i]=1;
cout<<"TROVATO!"<<endl;
}
}
}
您的首次检查&#34; pos&gt; 0&#34;是错误的,因为如果estratto字符串包含在从索引0开始的数字字符串中,则您的检查将无法找到它。 strcmp()函数的第二次检查只有在它与numeri [i]字符串完全匹配时才会捕获estratto字符串,但如果它是子字符串则不会。