Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Text Again

3.5K
01 апреля 2005 года
Mr. Nick
40 / / 01.01.2005
ПОМОГИТЕ разделить предложение на отдельные слова и эти слова присвоить разным переменным.. у меня получаетса но со значением переменной с последним словом получается что то не то

мой глючный код:

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;
301
01 апреля 2005 года
lord Kelvin
897 / / 08.11.2004
Твой код практически безукоризненен.
 
Код:
char* delimiters=" .,!@;:?=#$%^&*";
 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);
 }
3.5K
01 апреля 2005 года
Mr. Nick
40 / / 01.01.2005
может ты сможешь мне помочь с моим прошлым вопросом юон уже два дня на форуме валяется а ответа всё нет :(((
3.5K
02 апреля 2005 года
Mr. Nick
40 / / 01.01.2005
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
310
02 апреля 2005 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by Mr. Nick
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, там чётко указано:

Цитата:
The c_str method is intended primarily for reading the value of the AnsiString. To modify the string’s value, use the [] operator or AnsiString methods such as Insert and Delete


и ещё:

Цитата:
AnsiString::c_str() returns a non const temporary pointer to the internal string buffer in the AnsiString object. The pointer is invalid once the statement in which it is used has finished executing.



К чему это я? А вот к чему:
а) функция strupr модифицирует свой аргумент, в то время, как модифицировать внутреннее представление AnsiString через указатель, возвращённый c_str(), нельзя.
б) и вообще, указатель, возвращаемый c_str(), в этом контексте следует использовать для создания локальной копии строки, как и показано в соотвествующем примере.
в) и ещё, в качестве общего замечания: у AnsiString есть собственные методы для поиска символов, аналогичные strtok. Можно было бы воспользоваться ими.

3.5K
02 апреля 2005 года
Mr. Nick
40 / / 01.01.2005
Цитата:
Originally posted by fellow
Как говорится, RTFM! Почитайте справку по AnsiString, там чётко указано:

и ещё:


К чему это я? А вот к чему:
а) функция strupr модифицирует свой аргумент, в то время, как модифицировать внутреннее представление AnsiString через указатель, возвращённый c_str(), нельзя.
б) и вообще, указатель, возвращаемый c_str(), в этом контексте следует использовать для создания локальной копии строки, как и показано в соотвествующем примере.
в) и ещё, в качестве общего замечания: у AnsiString есть собственные методы для поиска символов, аналогичные strtok. Можно было бы воспользоваться ими.








а можещь по конкретнее написать мне код ... и ответить на предыдущий мой вопрос

301
02 апреля 2005 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by Mr. Nick
а можещь по конкретнее написать мне код ... и ответить на предыдущий мой вопрос


Я могу.=)

Код:
#include <strutils.hpp>
/*...*/
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);
 }
}
3.5K
02 апреля 2005 года
Mr. Nick
40 / / 01.01.2005
Цитата:
Originally posted by lord Kelvin
Я могу.=)
Код:
#include <strutils.hpp>
/*...*/
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,.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог