Как извлечь значение в массив с помощью C ++?

Я попытался найти в массиве значение, поступающее с сервера java. Сервер отправляет данные после нажатия на кнопку, и это значение принимается в estratto который является массивом символов.
Мне нужно найти 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;
}
}
}

соиЬ <<«Trovato!» << епсИ; не работает, если я пытаюсь изменить некоторые части этого кода. Кто-то может помочь мне найти решение?

0

Решение

Вы сталкиваетесь с проблемой неподписанного или подписанного набора символов? Вам может понадобиться кодировать и декодировать строку в соответствии со стандартом 64-битного кодирования.

0

Другие решения

Я бы изменил код следующим образом:

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

Ваша первая проверка «pos> 0» неверна, потому что, если строка чисел содержится в числовой строке, начиная с индекса 0, ваша проверка не найдет ее.
Ваша вторая проверка с помощью функции strcmp () вместо этого перехватит строку estratto, только если она точно совпадает со строкой цифр [i], но не если она является подстрокой.

-1

По вопросам рекламы [email protected]