"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

C++: Länge eines Strings an einem char Pointer?

Ecraft 26.11.2003 - 15:03 5117 41
Posts

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25381
vom scope. also zB innerhalb nur innerhalb einer funktion gültig.. damit vermeide ich das kopieren ins ds, weil am ende des scopes die vars wieder aus dem stack fliegen.

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11327
Zitat von Ecraft
char* s1 = "wasweisich";

Gibts hier irgendeinen schmäh wie man die Länge dieses Strings herausfindet ohne die Klassenbibliothek zu verwenden?

klar....

int length = 10;

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25381
:D

schneller wäre:

#define STRLEN 10

:)

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Zitat von mat
vom scope. damit vermeide ich das kopieren ins ds

Also Variante 2. Ins DS muss man nicht kopieren, dort ist der String schon. Auf den Stack müsste man hingegen schon kopieren, und das ist natürlich schwachsinnig, weil langsam.

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25381
ich mein ja ned so wies wirklich is.. schon klar, dass static vars ins ds kommen. ich frage mich nur ob es den programmierer wirklich einschränken würde, wenn ein konstanter string nicht statisch, sondern lokal wäre - also genauso wie eine lokale variable, und die wär ja nur im stack.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Naja, sowas ist schon ganz nützlich:
Code:
const char *getname()
{
  return "hello";
}

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25381
aber in der praxis nicht zu verwenden, weil man hier ein makro machen würde.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Dann denk's dir halt so:
Code:
const char *quip(int n)
{
  switch (n) {
    case 7: return "Do not believe in miracles. Rely on them.";
    case 70: return "It is morally wrong to allow naive end users to keep their money.";
    case 666: return "Save a cow. Eat a vegetarian!";
    case 1337: return "My programs don't have any bugs I didn't put there.";
  }
  return NULL;
}

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25381
..dachte mir das jetzt sowas kommt :)

IMO ein typischer fall für ein static array, eben etwas explizit deklariertes. na ja, egal.. sowas kann man wahrscheinlich gar ned ausdiskutieren, weils immer 100 verschiedene möglichkeiten gibt. :)

add: ausserdem is sowas hardgecodet ein böses nono ;)

funka

Legend
ex-prophet(down below)
Registered: Sep 2000
Location: Vienna / SF
Posts: 6131
der typ wollt eigentlich nur buchstaben zaehlen

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Das war nicht interessant genug :p Aber anregend war's offensichtlich :D

disposableHero

Addicted
Avatar
Registered: Mar 2001
Location: A&EE
Posts: 421
zu den 100en möglichkeiten kommt dann (oder doch scho vorher) die frage der performance hinzu
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz