Text Again
мой глючный код:
char* delimiters=" .,!@;:?=#$%^&*";
//
char* str=Edit1->Text.c_str();
strupr(str);
char* found;
found=strtok(str, delimiters);
Label3->Caption=found;
found=strtok(NULL, delimiters);
Label4->Caption=found;
found=strtok(NULL, delimiters);
Label5->Caption=found;
char str[]="Hello world from lord Kelvin";
strupr(str);
char* found;
found=strtok(str,delimiters);
while(found)
{
Memo1->Lines->Add(found);
found=strtok(NULL,delimiters);
}
a vot etu stroku vstav na mesto gde napisano
char str[]="Hello world from lord Kelvin";
i poluchish polnuu fignu
char* str=Edit1->Text.c_str();
a vot etu stroku vstav na mesto gde napisano
char str[]="Hello world from lord Kelvin";
i poluchish polnuu fignu
Как говорится, RTFM! Почитайте справку по AnsiString, там чётко указано:
и ещё:
К чему это я? А вот к чему:
а) функция strupr модифицирует свой аргумент, в то время, как модифицировать внутреннее представление AnsiString через указатель, возвращённый c_str(), нельзя.
б) и вообще, указатель, возвращаемый c_str(), в этом контексте следует использовать для создания локальной копии строки, как и показано в соотвествующем примере.
в) и ещё, в качестве общего замечания: у AnsiString есть собственные методы для поиска символов, аналогичные strtok. Можно было бы воспользоваться ими.
Как говорится, RTFM! Почитайте справку по AnsiString, там чётко указано:
и ещё:
К чему это я? А вот к чему:
а) функция strupr модифицирует свой аргумент, в то время, как модифицировать внутреннее представление AnsiString через указатель, возвращённый c_str(), нельзя.
б) и вообще, указатель, возвращаемый c_str(), в этом контексте следует использовать для создания локальной копии строки, как и показано в соотвествующем примере.
в) и ещё, в качестве общего замечания: у AnsiString есть собственные методы для поиска символов, аналогичные strtok. Можно было бы воспользоваться ими.
а можещь по конкретнее написать мне код ... и ответить на предыдущий мой вопрос
а можещь по конкретнее написать мне код ... и ответить на предыдущий мой вопрос
Я могу.=)
/*...*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString delim=" .,!@;:?=#$%^&*";
AnsiString str="Hello world from lord Kelvin";
AnsiString rslt;
str=ReverseString(str.UpperCase()+delim[1]);
int n=LastDelimiter(delim,str);
while(n)
{
rslt=ReverseString(str.SubString(n,str.Length()-n+1));
str.Delete(n,str.Length()-n+1);
Memo1->Lines->Add(rslt);
n=LastDelimiter(delim,str);
}
}
Я могу.=)
/*...*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString delim=" .,!@;:?=#$%^&*";
AnsiString str="Hello world from lord Kelvin";
AnsiString rslt;
str=ReverseString(str.UpperCase()+delim[1]);
int n=LastDelimiter(delim,str);
while(n)
{
rslt=ReverseString(str.SubString(n,str.Length()-n+1));
str.Delete(n,str.Length()-n+1);
Memo1->Lines->Add(rslt);
n=LastDelimiter(delim,str);
}
}
can you answer this question please:
str1="text from tedit"
file.txt в этом фаиле находятся строки:
1 word1,word2,word3#any phrase
2 word1,word2,word3#any phrase
3 ...
так вот мне нужно проверить наличие word1,word2,word3 в str1 и если они присутствуют то вывести предложение стоящее после '#' если в первой слов из первой строки нет в str1 то проверить таким-же способом вторую строку из фаила file.txt в общем помогите написать этот цыкл please,.