Здравствуйте. Есть такой код:
setlocale( LC_CTYPE, "rus" );
//Забираем 18 строку из RichTextBox находящегося в CDialog
int LineIndex;
int LineLength;
int y=18;
char *GS;
size_t found;
string str;
LineIndex=SendMessageA(dlgEdit,EM_LINEINDEX,(WPARAM)y,0);
LineLength=SendMessageA(dlgEdit,EM_LINELENGTH,(WPARAM)LineIndex,0);
GS=new char[LineLength];
GS[LineCount]='\0';
*(DWORD*) GS=LineLength;
SendMessageA(dlgEdit,EM_GETLINE,(WPARAM)y,(LPARAM)GS);
//Строка выглядит примерно так " Тип опоры: скользящая"
//Надо найти слово в полученной строке.
// Следующие 2 метода не работают, видимо, потому что строка и слово на кириллице.
if(strncmp(GS,"скользящая", 10)==0)cout<<"Found"<<endl;
else cout<<"Not found!!"<<endl;
str=string(GS);
found=str.find("скользящая");
if(found!=string::npos) cout<<"Find sk"<<endl;
else cout<<"Not Found sk"<<endl;
Есть идея разбить строку через strtok
char chFind[]="скользящая";
char *chWord;
chWord=strtok(GS," ");
while(chWord!=NULL){
int x=0;
for(x;x=strlen(chFind)-1;x++){
if(chWord[x]==chFind[x]) continue;
else break;
}
if(x==stelen(chFind)-1) break; // Нашли.
chWord=strtok(NULL," ");
}
Но вопрос в том, что наверняка есть менее топорное решение. К тому же слов для сравнения будет больше 10 и, что мне для каждого вызывать такой ужас?