Error writing text file: can not convert std :: string to const char *

2

I am not able to write a string in file .txt in C ++ (CodeBlocks).

// aux é um inteiro
// aux2 é uma string
// foi dado fopen no arquivo...abaixo só segue a parte com erro   

aux = x.retorne_energia();
aux2 = x.retorna_nome();
fprintf(arquivo,"%d",aux);

fputs(aux2,arquivo);
aux1 = y.retorne_energia();
aux2 = y.retorna_nome();

fprintf(arquivo,"%d %s",aux,aux2);
fclose(arquivo);

How can I resolve the errors below?

  

error: can not convert 'std :: string {aka std :: basic_string}' to   'const char *' for argument '1' to 'int fputs (const char *, FILE *)' |

     

error: can not pass objects of non-trivially-copyable type 'std :: string   {aka class std :: basic_string} 'through' ... '|

     

format '% s' expects argument of type 'char *', but argument 4 has type   'std :: string {aka std :: basic_string}' [-Wformat] |

    
asked by anonymous 12.06.2014 / 00:00

1 answer

1

The functions fprintf and fputs accept type const char * , you are passing a variable std::string .

Use c_str() to use the variable as C-string :

// ...
fputs(aux2.c_str(), arquivo);
// ...
fprintf(arquivo,"%d %s", aux, aux2.c_str());
    
12.06.2014 / 00:21