Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

char u string
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
rafaelm
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 24. 12. 2006. (13:30:11)
Postovi: (21F)16
Spol: muško
Sarma = la pohva - posuda
76 = 86 - 10
Lokacija: Zagreb

PostPostano: 22:22 sub, 5. 4. 2008    Naslov: char u string Citirajte i odgovorite

Kako u C++ prebaciti varijablu tipa char u string duljine 1?
Kako u C++ prebaciti varijablu tipa char u string duljine 1?



_________________
Rafael Mrđen
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 22:52 sub, 5. 4. 2008    Naslov: Citirajte i odgovorite

Logicno - obicnim pridruzivanjem:

[code:1]#include <iostream>
#include <string>

using namespace std;

int main(void) {
string s;
char c;
cout << "Upisite znak: ";
cin >> c;
s = c;
cout << "Char '" << c << "' prebacen u string je \"" << s << "\"." << endl;
return 0;
}[/code:1]

8)
Logicno - obicnim pridruzivanjem:

Kod:
#include <iostream>
#include <string>

using namespace std;

int main(void) {
  string s;
  char c;
  cout << "Upisite znak: ";
  cin >> c;
  s = c;
  cout << "Char '" << c << "' prebacen u string je \"" << s << "\"." << endl;
  return 0;
}


Cool



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Mad Wilson
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 05. 2006. (22:51:14)
Postovi: (121)16
Sarma = la pohva - posuda
23 = 34 - 11

PostPostano: 0:35 ned, 6. 4. 2008    Naslov: Citirajte i odgovorite

Ovisno o tome sto ti treba...[code:1]char c='F';
string s(1,c);[/code:1]
...dakle ovdje pomocu konstruktora.
Ovisno o tome sto ti treba...
Kod:
char c='F';
string s(1,c);

...dakle ovdje pomocu konstruktora.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
rafaelm
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 24. 12. 2006. (13:30:11)
Postovi: (21F)16
Spol: muško
Sarma = la pohva - posuda
76 = 86 - 10
Lokacija: Zagreb

PostPostano: 13:10 ned, 6. 4. 2008    Naslov: Citirajte i odgovorite

hvala.
Ma zbunilo me sto nisam mogao direktno ubaciti char u listu stringova, pa nisam pomislia da bi rjesenje bilo tako jednostavno... :D
hvala.
Ma zbunilo me sto nisam mogao direktno ubaciti char u listu stringova, pa nisam pomislia da bi rjesenje bilo tako jednostavno... Very Happy



_________________
Rafael Mrđen
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 13:26 ned, 6. 4. 2008    Naslov: Citirajte i odgovorite

U tom slucaju, ovo od striceka Poludjelog Vilsona je prikladnije:

[code:1]#include <iostream>
#include <string>
#include <list>

using namespace std;

int main(void) {
list<string> ls;
for (int i = 0; i < 3; ++i) {
char c;
cout << "Upisite znak: ";
cin >> c;
ls.push_front(string(1, c));
}
cout << "Lista: ";
for (list<string>::iterator it = ls.begin(); it != ls.end(); ++it)
cout << (it == ls.begin() ? "" : ", ") << *it;
cout << endl;
return 0;
}[/code:1]

Pardon my clumsiness; ja bas i ne znam C++. :oops:
U tom slucaju, ovo od striceka Poludjelog Vilsona je prikladnije:

Kod:
#include <iostream>
#include <string>
#include <list>

using namespace std;

int main(void) {
  list<string> ls;
  for (int i = 0; i < 3; ++i) {
    char c;
    cout << "Upisite znak: ";
    cin >> c;
    ls.push_front(string(1, c));
  }
  cout << "Lista: ";
  for (list<string>::iterator it = ls.begin(); it != ls.end(); ++it)
    cout << (it == ls.begin() ? "" : ", ") << *it;
  cout << endl;
  return 0;
}


Pardon my clumsiness; ja bas i ne znam C++. Embarassed



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
rafaelm
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 24. 12. 2006. (13:30:11)
Postovi: (21F)16
Spol: muško
Sarma = la pohva - posuda
76 = 86 - 10
Lokacija: Zagreb

PostPostano: 14:52 ned, 6. 4. 2008    Naslov: Citirajte i odgovorite

Da ne otvaram nov topic,

može li mi netko objasniti što je i čemu točno služi copy-konstruktor. Ono u slideovima je poprilično nejasno...
Da ne otvaram nov topic,

može li mi netko objasniti što je i čemu točno služi copy-konstruktor. Ono u slideovima je poprilično nejasno...



_________________
Rafael Mrđen
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Mad Wilson
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 05. 2006. (22:51:14)
Postovi: (121)16
Sarma = la pohva - posuda
23 = 34 - 11

PostPostano: 16:13 ned, 6. 4. 2008    Naslov: Citirajte i odgovorite

Konstruktor (kao i svaki drugi) koji prima referencu na tip (const tip).
Specificnost copy-konstruktora je uporaba; koristi se prilikom kopiranja objekta u drugi objekt istog tipa, kao primjerice kod: vracanja vrijednosti iz funkcije (return), prenasanja argumenata funkciji (po vrijednosti) i jos mnogo drugdje.

Dakle, uoci da se i ovdje[code:1]mojTip a;
mojTip b(a); <-
[/code:1], ali i ovdje[code:1]
mojTip a;
nekaFunkcija(a); <-
[/code:1]pozove ista stvar: copy-konstruktor.

Sa (explicitnim) definiranjem copy-konstruktora htjet ces se baviti ako tvoj objekt ima pointere na polja (ili takvo stogod), sto compiler sam po sebi ne bi znao rjesiti (mozda zelis da oba objekta ne pokazuju na isto polje, nego na razlicita polja s istim sadrzajem; pogledaj primjer sa vjezbi).
Jasnije?
Konstruktor (kao i svaki drugi) koji prima referencu na tip (const tip).
Specificnost copy-konstruktora je uporaba; koristi se prilikom kopiranja objekta u drugi objekt istog tipa, kao primjerice kod: vracanja vrijednosti iz funkcije (return), prenasanja argumenata funkciji (po vrijednosti) i jos mnogo drugdje.

Dakle, uoci da se i ovdje
Kod:
mojTip a;
mojTip b(a);   <-
, ali i ovdje
Kod:

mojTip a;
nekaFunkcija(a);   <-
pozove ista stvar: copy-konstruktor.

Sa (explicitnim) definiranjem copy-konstruktora htjet ces se baviti ako tvoj objekt ima pointere na polja (ili takvo stogod), sto compiler sam po sebi ne bi znao rjesiti (mozda zelis da oba objekta ne pokazuju na isto polje, nego na razlicita polja s istim sadrzajem; pogledaj primjer sa vjezbi).
Jasnije?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
rafaelm
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 24. 12. 2006. (13:30:11)
Postovi: (21F)16
Spol: muško
Sarma = la pohva - posuda
76 = 86 - 10
Lokacija: Zagreb

PostPostano: 18:13 ned, 6. 4. 2008    Naslov: Citirajte i odgovorite

Da, jasnije mi je, al ne pretjerano. Zašto se npr. stavlja const tip u popisu varijabli?



Nekako mi se čini da nas na vježbama više uče šablonama, nego zašto i kako to funkcionira...
Da, jasnije mi je, al ne pretjerano. Zašto se npr. stavlja const tip u popisu varijabli?



Nekako mi se čini da nas na vježbama više uče šablonama, nego zašto i kako to funkcionira...



_________________
Rafael Mrđen
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Mad Wilson
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 05. 2006. (22:51:14)
Postovi: (121)16
Sarma = la pohva - posuda
23 = 34 - 11

PostPostano: 18:58 ned, 6. 4. 2008    Naslov: Citirajte i odgovorite

[quote="rafaelm"]Da, jasnije mi je, al ne pretjerano. Zašto se npr. stavlja const tip u popisu varijabli?[/quote]
Ako ga ne stavis, nece biti stavljen... :)
Obicno se stavlja da se izbjegnu nezgodnosti u nekim situacijama. Ovako se garantira da se objekt predan kao argument nece mjenjati sto je uglavnom u skladu s praksom; to je copy-konstuktor, argument se koristi da bi se na osnovi njega izradila kopija i kao takav (najcesce) ostaje nepromjenjen.
Takoder, to omogucava pozivanje konstruktora na const objektima.[code:1]
const tip a;
tip b(a);[/code:1]

[quote="rafaelm"]Nekako mi se čini da nas na vježbama više uče šablonama, nego zašto i kako to funkcionira...[/quote]
Upisi kolegij Objektno programiranje (C++). Mislim da ces tamo doseci nirvanu. ;)


EDIT: copy-con ne mora bas nuzno primati referencu na konstantan objekt (sad pogledao u primeru), da ti precizno odgovorim na pitanje. Ali ne znam, zasto bi itko napravio ista drugacije.
rafaelm (napisa):
Da, jasnije mi je, al ne pretjerano. Zašto se npr. stavlja const tip u popisu varijabli?

Ako ga ne stavis, nece biti stavljen... Smile
Obicno se stavlja da se izbjegnu nezgodnosti u nekim situacijama. Ovako se garantira da se objekt predan kao argument nece mjenjati sto je uglavnom u skladu s praksom; to je copy-konstuktor, argument se koristi da bi se na osnovi njega izradila kopija i kao takav (najcesce) ostaje nepromjenjen.
Takoder, to omogucava pozivanje konstruktora na const objektima.
Kod:

const tip a;
tip b(a);


rafaelm (napisa):
Nekako mi se čini da nas na vježbama više uče šablonama, nego zašto i kako to funkcionira...

Upisi kolegij Objektno programiranje (C++). Mislim da ces tamo doseci nirvanu. Wink


EDIT: copy-con ne mora bas nuzno primati referencu na konstantan objekt (sad pogledao u primeru), da ti precizno odgovorim na pitanje. Ali ne znam, zasto bi itko napravio ista drugacije.




Zadnja promjena: Mad Wilson; 19:10 ned, 6. 4. 2008; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 19:01 ned, 6. 4. 2008    Naslov: Citirajte i odgovorite

[quote="rafaelm"]Da, jasnije mi je, al ne pretjerano. Zašto se npr. stavlja const tip u popisu varijabli?[/quote]
Argument copy konstruktora je [b]const referenca[/b] (tocnije: referenca na konstantni objekt). Referenca radi toga da bi se izbjeglo nepotrebno kopiranje potencijalno velike kolicine podataka, a const radi toga sto se u suprotnom ne bi mogla praviti kopija nekonstantnog objekta.

[quote]
Nekako mi se čini da nas na vježbama više uče šablonama, nego zašto i kako to funkcionira...[/quote]
Nazalost si u pravu, ali u satnici 1+2 nije ni moguce nista vise napraviti. Ipak, tome se lako doskoci: uzmi neku knjigu i citaj. Preporucam: [url=http://www.amazon.com/C%2B%2B-Primer-4th-Stanley-Lippman/dp/0201721481/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1207504848&sr=8-1]C++ Primer[/url].
rafaelm (napisa):
Da, jasnije mi je, al ne pretjerano. Zašto se npr. stavlja const tip u popisu varijabli?

Argument copy konstruktora je const referenca (tocnije: referenca na konstantni objekt). Referenca radi toga da bi se izbjeglo nepotrebno kopiranje potencijalno velike kolicine podataka, a const radi toga sto se u suprotnom ne bi mogla praviti kopija nekonstantnog objekta.

Citat:

Nekako mi se čini da nas na vježbama više uče šablonama, nego zašto i kako to funkcionira...

Nazalost si u pravu, ali u satnici 1+2 nije ni moguce nista vise napraviti. Ipak, tome se lako doskoci: uzmi neku knjigu i citaj. Preporucam: C++ Primer.



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 19:39 ned, 6. 4. 2008    Naslov: Citirajte i odgovorite

[quote="mdoko"][quote="rafaelm"]Da, jasnije mi je, al ne pretjerano. Zašto se npr. stavlja const tip u popisu varijabli?[/quote]
Argument copy konstruktora je [b]const referenca[/b] (tocnije: referenca na konstantni objekt). Referenca radi toga da bi se izbjeglo nepotrebno kopiranje potencijalno velike kolicine podataka, a const radi toga sto se u suprotnom ne bi mogla praviti kopija nekonstantnog objekta.[/quote]

Na primjer, ovo se ne da compilirati:

[code:1]#include <iostream>

using namespace std;

void ispisi_znak(char &c) {
cout << c;
}

int main(void) {
ispisi_znak('x');
return 0;
}[/code:1]

Ono sto te tu snadje, compiler objasnjava s
[code:1]t.cpp: In function ‘int main()’:
t.cpp:10: error: invalid initialization of non-const reference of type ‘char&’ from a temporary of type ‘char’
t.cpp:5: error: in passing argument 1 of ‘void ispisi_znak(char&)’[/code:1]

No, ako se
[tt]void ispisi_znak(char &c)[/tt]
zamijeni s
[tt]void ispisi_znak(const char &c)[/tt],
stvar radi! :D

Naravno, bez [tt]const[/tt], ti u funkciji mozes mijenjati [tt]c[/tt], sto je krajnje nelogicno ako je tvoj [tt]c[/tt] zapravo onaj [tt]'x'[/tt] (napominjem: ne samo da sadrzi [tt]'x'[/tt], nego on [b]JE[/b] taj [tt]'x'[/tt]!). :)
mdoko (napisa):
rafaelm (napisa):
Da, jasnije mi je, al ne pretjerano. Zašto se npr. stavlja const tip u popisu varijabli?

Argument copy konstruktora je const referenca (tocnije: referenca na konstantni objekt). Referenca radi toga da bi se izbjeglo nepotrebno kopiranje potencijalno velike kolicine podataka, a const radi toga sto se u suprotnom ne bi mogla praviti kopija nekonstantnog objekta.


Na primjer, ovo se ne da compilirati:

Kod:
#include <iostream>

using namespace std;

void ispisi_znak(char &c) {
  cout << c;
}

int main(void) {
  ispisi_znak('x');
  return 0;
}


Ono sto te tu snadje, compiler objasnjava s
Kod:
t.cpp: In function ‘int main()’:
t.cpp:10: error: invalid initialization of non-const reference of type ‘char&’ from a temporary of type ‘char’
t.cpp:5: error: in passing argument 1 of ‘void ispisi_znak(char&)’


No, ako se
void ispisi_znak(char &c)
zamijeni s
void ispisi_znak(const char &c),
stvar radi! Very Happy

Naravno, bez const, ti u funkciji mozes mijenjati c, sto je krajnje nelogicno ako je tvoj c zapravo onaj 'x' (napominjem: ne samo da sadrzi 'x', nego on JE taj 'x'!). Smile



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
vinko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 08. 2006. (23:08:00)
Postovi: (1A8)16
Spol: muško
Sarma = la pohva - posuda
69 = 87 - 18
Lokacija: PMF-MO 214

PostPostano: 22:18 ned, 6. 4. 2008    Naslov: Citirajte i odgovorite

[quote="rafaelm"]Da, jasnije mi je, al ne pretjerano. Zašto se npr. stavlja const tip u popisu varijabli?

Nekako mi se čini da nas na vježbama više uče šablonama, nego zašto i kako to funkcionira...[/quote]
Sori, ako se tako osjećate. Pa pitajte što vam ne bude jasno.

Inače, na reference i const ćemo potrošiti jedne skoro cijele vježbe (br. 7), a vjerojatno i na kopiranje objekata s dinamičkim elementima (copy-konstruktor, destruktor i operator pridruživanja, 9. vjezbe)
rafaelm (napisa):
Da, jasnije mi je, al ne pretjerano. Zašto se npr. stavlja const tip u popisu varijabli?

Nekako mi se čini da nas na vježbama više uče šablonama, nego zašto i kako to funkcionira...

Sori, ako se tako osjećate. Pa pitajte što vam ne bude jasno.

Inače, na reference i const ćemo potrošiti jedne skoro cijele vježbe (br. 7), a vjerojatno i na kopiranje objekata s dinamičkim elementima (copy-konstruktor, destruktor i operator pridruživanja, 9. vjezbe)


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Možete otvarati nove teme.
Možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan