String ve třídě – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

String ve třídě – C / C++ – Fórum – Programujte.comString ve třídě – C / C++ – Fórum – Programujte.com

 

eidam19950
Newbie
13. 12. 2007   #1
-
0
-

Ahoj lidičky.
Mám menší problém.Ve třídě jsem si vytvořil řetězec string.Problém nastává,když chci do řetězce něco zapsat,to pak program normálně spadne.Při tom s int mi to v pohodě jede.Je to tím že string je taky třída?Prosím poraďte.

Nahlásit jako SPAM
IP: 194.212.1.–
Hledám vhodný podpis[br]Zn. spěchá
tmi0
Věrný člen
13. 12. 2007   #2
-
0
-

ukaz deklaraci ty tridy a zpusob jakym pristupujes k tomu stringu. obecne neni problem zapisovat do tridy ve tride.

Nahlásit jako SPAM
IP: 89.185.230.–
ksp.mff.cuni.cz -- doporučuje 5 z 0 přetečených bufferů!
eidam19950
Newbie
13. 12. 2007   #3
-
0
-

To tmi :
Deklarace:

class subject{

int nuos;
int utrp;
string naos;
string zkr;
public:
string get_naos(){return naos;}
void set_naos(string n){naos=n;}
string get_zkr(){return zkr;}
void set_zkr(string z){zkr=z;}
int get_nuos(){return nuos;}
void set_nuos(int num){nuos=num;}
int get_utrp(){return utrp;}
void set_utrp(int ut){
if(ut>10){
ut=10;
}
utrp=ut;
}


Přístup:

for(int i=1;true;i++){

system("cls");
subject pred[i];
pred[i].set_nuos(i);
string na;
string zk;
int u;
cout<<"Zadej uplny nazev predmetu "<<i<<" :\n\n";
cin>>na;
cout<<"\n\n\nZadej zkratku pro tento predmet:\n\n";
cin>>zk;
cout<<"\n\n\nZadej utrpeni pro tento predmet(cele cislo v rozsahu 1-10):\n\n";
cin>>u;
pred[i].set_naos(na);
pred[i].set_zkr(zk);
pred[i].set_utrp(u);
Yes_no_1:cout<<"\aVlozit dalsi predmet?\n\n >ANO< * >NE<\n{?}\b\b";


Na to "Ano-Ne" ani nedojde,ale když v kódu nechám pouze metody,které nastavují int, tak program jede dál.

Nahlásit jako SPAM
IP: 194.212.1.–
Hledám vhodný podpis[br]Zn. spěchá
Huge0
Návštěvník
13. 12. 2007   #4
-
0
-

Vydím tam jen jednu chybu a ta není fatální, no možná je to horší...:
subject pred[i]; - To není správně vytvořené pole (A chtěl jsi vůbec vytvářet pole?), lepší je subject* pred = new subject[i], udělá to totéž, ale mnoohem čistěji.
No a teď už by ti mohlo být jasné, kde by měla být chyba. V následujících řádcích několikrát voláš pred[i], kde pole pred je však indexováno v intervalu <0, i-1>, takže voláš prvek, který v tom poli není, saháš do nepovolené paměti a KABOOM.
Měj se.

Nahlásit jako SPAM
IP: 88.102.203.–
eidam19950
Newbie
14. 12. 2007   #5
-
0
-

No jo,to jsem si neuvědomil,ale když teď nad tím přemíšlím,tak to [i] tam nemá co dělat.
Ale teď mimo mísu,existuje funkce na principu

ofstream ofs();

ale aby argument určující jméno výsledného souboru NEBYL typu const char*,ale aby mohl být ovlivněn chodem programu?
Díky

Nahlásit jako SPAM
IP: 194.212.1.–
Hledám vhodný podpis[br]Zn. spěchá
Huge0
Návštěvník
14. 12. 2007   #6
-
0
-

To, že je parametr té funkce typu const char* ještě neznamená, že jí musíš předávat ukazatel na konstantu.
To jen říká, že obsah toho ukazatele nebude měněn, vpodstatě to, že parametr bude použitý jen pro čtení.
Takže tomu můžeš předat libovolný Cčkovský řetězec typu char* případně použít metodu třídy string c_str pro získání konstantního ukazatele na 1. znak dat ve stringu.

Nahlásit jako SPAM
IP: 88.102.203.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

String to hex ebo Byte()"string" — založil Roman Uherek

WinProc ve třídě — založil ingiraxo

Přístup ke třídě — založil Tom

Třída ve třídě, C++ — založil Luu

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý