PDA

Visualizza versione completa : [C++] Concatenare stringhe


Downloader
12-03-2005, 14.25.45
Ho scitto un programma a cui ho implementato una funzione che permette di creare un file.

Il tutto pero funziona senza che l'utente possa decidere quale sia il nome del file, ne tantomeno in quale percorso andare a salvare il file.

So che c' una funzione che pero non trovo che mi permette dopo aver riempito le due stringhe inserenti a nome file e path di concatenarle insieme in modo da ottenere una sola variabile char da inserire nella funzione fopen.

Mi date una mano?

tnx! ;)

LoryOne
12-03-2005, 15.13.52
In C++ esiste la tipologia string.
Se definisci due variabili di tipo string 'a' e 'b', la variabile 'c' risultante dal concatenamento delle due ottenibile attraverso l' utilizzo dell' operatore '+'.

string a="Down";
string b="loader";
string c=a+b;

Downloader
12-03-2005, 19.24.51
Ma in C++ non esiste un tipo di dato stringa, io ho provato creando un array di char, ma ho un errore, ti posto il codice.


void new_file(FILE *pf) // pf il puntatore al file
{
//string prova;
char path[20];
char nome[20];
char tutto[20];
cout<<"Inserisci il percorso: ";
gets("path");
cout<<"Inserisci nome file: ";
gets("nome_file");
tutto=(path+nome);

pf=fopen(tutto, "w");
fclose(pf);
}

Dav82
12-03-2005, 19.30.53
Che errore ti viene dato?

Prova a stampare la variabile tutto, con dei limitatori all'inizo e alla fine (tipo "###"), oppure usa il debugger, per vedere effettivamente che file si sta tentando di aprire ;)

LoryOne
13-03-2005, 11.56.02
La tipologia string non nativa.
Prima di poterla utilizzare devi includere l'header string

#include <string>

LoryOne
13-03-2005, 12.05.37
Originariamente inviato da Downloader
Ma in C++ non esiste un tipo di dato stringa, io ho provato creando un array di char, ma ho un errore, ti posto il codice.


void new_file(FILE *pf) // pf il puntatore al file
{
//string prova;
char path[20];
char nome[20];
char tutto[20];
cout<<"Inserisci il percorso: ";
gets("path");
cout<<"Inserisci nome file: ";
gets("nome_file");
tutto=(path+nome);

pf=fopen(tutto, "w");
fclose(pf);
}


se "path" pu al massimo contenere 20 caratteri e "nome" lo stesso, come fa "tutto" a non essere impostato almeno a 40 ?
Se non vuoi utilizzare C++ per concatenare due stringhe, allora devi far ricorso a strcpy e strcat/strncat.

NS-1
14-03-2005, 13.45.59
ma perch incasinarsi la vita quando ci sono le librerie apposite?

#include <string> .... e vai tranquillo :D



p.s. altrimenti sarebbe un prog in C non in C++ :)