Newsgroup: it.comp.lang.c++
Titolo: Come concatenare char * e char?

Non so proprio come risolvere questo problema...
Se non lavorando con i puntatori. E strcat mi pare non serva in questo caso.
Il mio problema e' questo:
char ch='2':
char* str="ciao";
Come posso aggiungere ch a str ottenendo il char* "ciao2"?
Potete aiutarmi?
Grazie mille :)

 Come posso aggiungere ch a str ottenendo il char* "ciao2"?
Se facessi x esempio
char ciao2[6];
memcpy(ciao2, str, 4);
ciao2[4] = ch;
ciao2[5] = 0;
Eido

 ciao2[5] = 0;
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
;-)
-- 
Luc.

 ;-)
Ehm... err... lo so, è che ho programmo solo in C
da qualche tempo e sto diventando un po' monocorde...
meno male che ho messo da parte l'assembler ;)
Eido

 Come posso aggiungere ch a str ottenendo il char* "ciao2"?
Non puoi. Dovresti allocare un nuovo array più grande, ricopiarci il
contenuto di str e aggiungerci in fondo ch, e magari anche un '\0' (tanto
per gradire).
std::string è stato inventato proprio per risparmiare al programmatore
tutte queste complicazioni inutili.
Usa std::string, e dimenticati strcat.
Max

Gabry, hai turbato la mia meditazione scrivendo questo:

In questi casi, è meglio utilizzare le std::string della STL, no?
#include <iostream>
#include <string>
using namespace std;
int main() {
    string str("ciao");
    cout << "str = " << str << endl;
    str += '2';
    cout << "str = " << str << endl;
    return 0;
}
se ti dovesse servire un const char* equivalente ad una stringa, basta
utilizzare
la funzione membro c_str().
--
Lupin85© - Filser #2
Founder di #fils [
azzurranet.org
]
"It is not important what you believe, only that you believe."

 std::string č stato inventato proprio per risparmiare al programmatore


str[strlen(str)-1]=buffer[t];
È sbagliato e generalmente non funziona (o meglio, sembra funzionare
ma può fare pasticci). Stai concatenando un carattere ad una stringa
non abbastaza grande per contenerlo e comunque che potrebbe essere
read-only.
-- 
Marco Barisione (ICQ 84277092)

 str[strlen(str)-1]=buffer[t];
str è definita come nel tuo primo messaggio?
Sembra funzionare, ma non sai quanto sei fortunato se non vedi fuochi 
artificiali. 
Praticamente, stai scrivendo in una zona "riservata" ad una stringa 
costante, in più sfori oltre... 

 A proposito come si definisce una stringa?  
 #include <string>
 std::string str = "ciao";
Al resto ti hanno gia risposto.
Max

 ha scritto nel messaggio
news:Pine.LNX.4.21.020917...@localhost.localdomain...


 Grazie mille :)
Ciao Gabry,
tutti ti consigliano la classe string ma tu chiedi diversamente...
hai 1 char e un dinamic char che non ne conosci la dimensione.
prima rendi il char una stringa e poi concateni...
char ch='2';
char chStr[2];
char* str="ciao";
chStr[0]=ch;
chStr[1]='\0';
strcat(str,chStr);
è questo che vuoi?
bye duido

 strcat(str,chStr);
BOOM!!!!
-- 
Luc.

 bye duido

 Che dite?
strcat() non rialloca nulla. Non potrebbe nemmeno se volesse. Cerca il
primo NULL, e da lě comincia a scrivere. Se puň farlo, bene, se non puň
farlo, tanto peggio (undefined behaviour).
Max

 ;-)
ma chi l'ha detto che è C ??
che in c++ si possa fare in altro modo non significa che non sia c++ :))
il linguaggio lo permette e di conseguenza è c++

 ma chi l'ha detto che è C ??
E' una vecchia storia... Cerca con google... ;=)
-- 
Luc.

> E' una vecchia storia... Cerca con google... ;=)
non vedo il perchè ... se il c++ permette è ovvio che sia c++ :))