C ++, поиск APT_String и эффективность - PullRequest
0 голосов
/ 23 мая 2011

Прежде всего, решение этого вопроса должно быть очень эффективным.

Моя проблема заключается в том, что мне нужно сравнить определенные части двух APT_String с (тип DataStage).А именно, строки - это фамилии, которые содержат пробел, такой как «Коричневый мозг».Однако имена находятся в 30-байтовом поле, а оставшееся пространство заполнено пробелами.

Короче говоря, мне нужно найти первый экземпляр двух последовательных пробелов (чтобы обозначить конец полезной фамилии).Мое решение -

bool foundit = false;

for (int ind = 0; ind<=q_array[i].LAST_NAME.length() && !foundit; ind++) { if (q_array[i].LAST_NAME[ind] == ' ' && q_array[i].LAST_NAME[ind+1] == ' ') { cout<<"two spaces in a row at char " << ind << endl;

foundit = true;

}
}

К сожалению, APT_String не появляетсячтобы найти (), или я бы использовал это.У кого-нибудь есть лучший или более эффективный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 23 мая 2011

30-байтовое поле не может занять много времени для сканирования, не так ли?

Если я буду искать конец имени, я начну с конца строки и буду сканировать в обратном порядке до появления первого не пробела.

0 голосов
/ 23 мая 2011

Опять же, если вы хотите знать, есть ли в строке определенные символы, вам нужно выполнить итерацию по ней. Никаких других шансов, даже find и strcmp, и тому подобное. Никаких шансов на эту петлю.

Теперь вы всегда можете обернуть этот APT_String в свой собственный класс myAPT_String, который также имеет член size_t string_size, которым вам нужно управлять, и использовать его для перехода к концу строки.

...