"We are back" « oc.at

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

Ecraft 26.11.2003 - 15:03 5404 41
Posts

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25532
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

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11342
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: 25532
: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: 25532
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: 25532
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: 25532
..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: 440
zu den 100en möglichkeiten kommt dann (oder doch scho vorher) die frage der performance hinzu
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz