Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Claudio Neto

[Resolvido] Erro com printf

Recommended Posts

Estou usando a classe vector e está me dando erro ao usar printf.

 

O código está assim:

vector<string> SS;
	   SS.push_back("teste 1");
	   SS.push_back("teste 2");
	   SS.push_back("teste 3");
	 
	   printf("Imprimindo testes\n");
	 
	   int ii;
	   for(ii=0; ii < SS.size(); ii++)
	   {
	      prinft("%s",SS[ii]); //Linha 21
	   }

Mas se usar "cout << SS[ii] << endl;" funciona.

 

O erro apresentado é:

vetor.cpp: In function `int main()':
vetor.cpp:21: warning: cannot pass objects of non-POD type `struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >' through `...'; call will abort at runtime

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função printf espera um ponteiro do tipo char,você passou um objeto da classe string.

Use o método c_str para "fazer o cast".

Ou ainda,escreva de maneira mais elegante:

#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    vector<string> ss;
    ss.push_back("string 1");
    ss.push_back("string 2");
    ss.push_back("string 3");
    cout << "Imprimindo testes:" << endl;
    copy(ss.begin(), ss.end(), ostream_iterator<string>(cout, "\n"));
    return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum, então para dar certo usando printf eu teria que declarar meu vetor como char?

 

Ok.

 

Usarei o cout mesmo.

 

Valeu eibon.

 

Abraço.

 

 

Edit: Aproveitando. Você sabe me dizer se é possível criar um vetor com estrutura.

Assim eu teria por exemplo:

ss.item1

ss.item2

ss.item3

 

Dá para fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não dá pra fazer não,e nem tem por que.

Quanto a primeira dúvida,não é isso.Você simplesmente tem que passar parametros dos tipos que a função espera,no caso char*,ai você usa o método c_str para o "cast".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Edit: Aproveitando. Você sabe me dizer se é possível criar um vetor com estrutura.

Assim eu teria por exemplo:

ss.item1

ss.item2

ss.item3

 

Não sei se entendi isso...

Você quer dizer um 'array que armazena estruturas (struct)'?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim sim Isis. Isso mesmo.

 

Por achar que não dá usei um pouco de POG, mas se for possível vai me ajudar bastante com minha necessidade.

 

Quando a outra dúvida, foi sanada.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A quem possa interessar, ficou assim a conversão de string para char:

 

#include <string.h>
#include <cstring>

vector<int> Canal;
vector<int> Placa;
vector<string> Numero;
vector<string> Gravacao;

funcao{

char *CaminhoAudio;

for(int i = 0; i < Canal.size(); i++){
  if(Canal[i] == Obj && Placa[i] == Event->DeviceId){
    CaminhoAudio = new char [Gravacao[i].size()+1];
    strcpy (CaminhoAudio, Gravacao[i].c_str());
  }
}

}

Att,

 

Cláudio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.