The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > Alto Nível de programação
.
google unix.com



Alto Nível de programação Post perguntas sobre C, C + +, Java, SQL, e outras linguagens de programação aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Um programa para rastrear execução de outro programa jiten_hegde Alto Nível de programação 3 08-19-2008 06:26
strtok equivalente em perl jisha Programação Shell Script e 1 05-06-2008 04:38
Regardign strtok () direcionando a saída 2-D String Array SankarV Alto Nível de programação 3 04-28-2008 10:48
Strtok função .... Tanvirk Linux 3 01-24-2008 10:16
melhor maneira do que strtok? annie Alto Nível de programação 7 10-05-2005 03:01

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 10-04-2008
sathishkmrv sathishkmrv is offline
Usuário
  
 

Join Date: Sep 2007
Posts: 6
Como usar strtok duas vezes no mesmo programa?


Código:
       string str1(" 1 2 3 4 512543 ");
                 string str2;
                 if(str2.empty())
                        str2=str1;
                cout << "str2:" <<str2 <<endl;
                p1=strtok((char *)str1.c_str()," ");
                while(p1)
                {
                        v1.push_back(atoi(p1));
                cout << "val of p1 " << p1 << endl;
                 p1=strtok(NULL," ");
                }
                cout << "size of v1 " << v1.size() <<endl;
                p2=strtok((char *)str2.c_str()," ");
                cout << "str2:" <<str2 <<endl;
                while(p2)
                {
                        v2.push_back(atoi(p2));
                        cout << "val of p2 " << p2 <<endl;
                        p2=strtok(NULL," ");
                }

                cout << "size of v2" << v2.size() <<endl;

Recebo o seguinte o / p.


Código:
str2: 1 2 3 4 512543 
val of p1 1
val of p1 2
val of p1 3
val of p1 4
val of p1 512543
size of v1 5
str2: 1234512543
val of p2 1
after tok p2  
size of v21

Quero str2 também ser simbolizado. Mas, depois de atingir strtok NULL uma vez que só retorna NULL ponteiro sempre quando é acessada usando NULL.

Como posso tokenize str2 agora?

Obrigado
  #2 (permalink)  
Old 10-04-2008
temível redoubtable is offline
Usuário
  
 

Join Date: Aug 2008
Localização: Portugal
Lugares: 242
Não compreendo a necessidade de utilizar strtok () para o seu problema. De qualquer maneira, a resposta é pouco por todo o manual para strtok (3):
Citação:
BUGS
Evite utilizar estas funções. Se você usá-lo, note que:

Estas funções modificar o seu primeiro argumento.

Estas funções não podem ser usados em constante cordas.

A identidade do personagem delimitando está perdido.

O strtok () utiliza uma função estática tampão ao analisar, portanto, não é seguro discussão. Utilize strtok_r () Se esta matéria para você.
Para tornar o seu código funcionar, você pode enganar o compilador desta forma:

Código:
// ...
       string str1(" 1 2 3 4 512543 ");
                 string str2;
                 if(str2.empty())
                 {
                        str2=str1;
                        str2.insert(0, ""); // now, you tell me why this apparently solves your problem!
                 }
                cout << "str2:" <<str2 <<endl;
                p1=strtok((char *)str1.c_str()," ");
// ...

  #3 (permalink)  
Old 10-04-2008
sathishkmrv sathishkmrv is offline
Usuário
  
 

Join Date: Sep 2007
Posts: 6
Como usar strtok duas vezes no mesmo programa?

Sim. Funcionou!
Mas como é que a inserção de
Código:
str2.insert(0, "");

resolveu o problema?
As manpages também indica que não é aconselhável a utilização.
  #4 (permalink)  
Old 10-07-2008
Saurabh78 Saurabh78 is offline
Usuário
  
 

Join Date: Jun 2004
Lugares: 40
melhor utilização strtok_r
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 11:28.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0