Ir ao conteúdo
  • Cadastre-se

Problema ao concatenar strings em c++


renatocf
Ir à solução Resolvido por V!OLADOR,

Posts recomendados

Olá !

Estou tendo um problema com a concatenação de strings, escrevi um programa de respostas...

Mas quando peço para ele salvar um arquivo em outra pasta, salva o arquivo na mesma pasta do programa...

Segue o código :

#include <iostream>#include <fstream>using namespace std;int main ();int dial(){        char n[40], ext[40]=".pan", dir[50]="frases\\\\", texto[40], op;    string dial, name;    float a, b, r;       system("color f0");    cout << ">";    cin >> n;          strcat(dir,n);    strcat(dir,ext);            cout << dir << endl;         ifstream file (n);  if (file.is_open())  {    while (! file.eof() )    {      getline (file,dial);      cout << "";                            cout << dial << endl;      cout << endl;    }    file.close();  }    else {  cout << "I did not understand, what do I answer ?" << endl;  ofstream file;  file.open (n);  cin >> texto;        file << texto;  file.close();    }    return main ();    }int main (){     return dial (); }

Obrigado !!

Link para o comentário
Compartilhar em outros sites

  • Solução

Em C++ a melhor maneira de lidar com cadeias de caracteres é usando objetos do tipo std::string ao invés do tipo char diretamente. Assim você pode concatenar de maneira até mais elegante, usando operadores aritméticos. Alem de possuir uma infinitude de funções de busca, substituição, etc.

 

EDIT: Não esqueça de incluir a biblioteca <string>. Alem disso, no exemplo, a função c_std() é usada apenas pra fazer com o que o objeto se comporte como um char*. A função open() só aceita char*

 

Por exemplo,

//// Processando o nome do arquivo://std::string dir  = "/home/user/";std::string file = "teste.txt";std::string path = dir + file; // path = /home/user/teste.txt//// Agora basta abrir o arquivo://std::ostream output;output.std::ostream::open(path.std::string::c_str());output << "olá mundo";
Link para o comentário
Compartilhar em outros sites

 

Em C++ a melhor maneira de lidar com cadeias de caracteres é usando objetos do tipo std::string ao invés do tipo char diretamente. Assim você pode concatenar de maneira até mais elegante, usando operadores aritméticos. Alem de possuir uma infinitude de funções de busca, substituição, etc.

 

EDIT: Não esqueça de incluir a biblioteca <string>. Alem disso, no exemplo, a função c_std() é usada apenas pra fazer com o que o objeto se comporte como um char*. A função open() só aceita char*

 

Por exemplo,

//// Processando o nome do arquivo://std::string dir  = "/home/user/";std::string file = "teste.txt";std::string path = dir + file; // path = /home/user/teste.txt//// Agora basta abrir o arquivo://std::ostream output;output.std::ostream::open(path.std::string::c_str());output << "olá mundo";

 

Me esclareceu muita coisa !

Obrigado !

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...