Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Gibt es eine SizeGröße Grenze für ein string?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
27.04.2004, 20:19 Uhr
kaihua



Gibt es eine SizeGröße Grenze für ein string?
Wenn ja, wie groß ist das? Und ist das abhängig von der Maschine oder eigentlich ist das die Eigenschaft der C++ Sprache?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.04.2004, 20:31 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


eventuell bekommst du es so raus weiss ich aber auch nicht genau

C++:
#include <iostream>
#include <string>

int main(){
    std::string str;
    std::cout<< str.max_size()<<std::endl;
}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.04.2004, 20:44 Uhr
kaihua




C++:
#include <iostream>
#include <string>
using namespace std;

int main()
{

    string one;
    string two;

    cout<<"Please enter a string: ";
    getline(cin, one);
    cout<<one<<endl;

    two = "12345678";
    cout<<two<<endl;

    unsigned int max_size = string::npos;

    cout<<max_size<<endl;

    return 0;
}




ich habe das auch im Buch <<C++ Primer Plus>> Seite 780 gelesen. Zitiert: The class defines string::npos as the maximum possible length of the string. Typically, this would equal the maximum value of an unsigned int.

Aber ich weiß nicht, ob das bedeutet, das MaximumGröß die Eigenschaft der Sprach ist, d.h maschineunabhängig und compilerunabhängig, oder doch etwas abhängig.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.04.2004, 20:50 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


jo ist dann maschinenabhängig.

maximum liegt dann wohl bei 2 hoch 8*sizeof(unsigned int) was bei nem 32biter wohle 2^32 sein werden
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 27.04.2004 um 20:50 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.04.2004, 20:55 Uhr
kaihua



ich bin sehr dankbar für Ihre Antworte.
Aber ich habe das in nirgend ein Buch gelesen. Warum?
Noch eine Frage, Sind Sie sicher für Ihre Antwort oder nur vermutung?
Ich vermute das auch, aber ich bin nicht sicher.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.04.2004, 21:10 Uhr
kaihua



etwas merkwürdig.

ich habe Ihre Programm ausgeführt. Ausgabe ist 4294967293
und dann führe ich mein Programm aus. Ausgabe ist 4294967295.

Die beibe Ausgaben sind nicht gleich. Offensichtlich ist 4294967295 das Maximum von unsigned int.

Aber welche ist denn richtig?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.04.2004, 21:12 Uhr
kaihua




C++:
#include <iostream>
#include <string>

using namespace std;


int main(){
    std::string str;
    std::cout<< str.max_size()<<std::endl;

    unsigned int max_size = string::npos;

    cout<<max_size<<endl;  // die beiden Ausgaben sind nicht identisch, aber warum?

}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
27.04.2004, 21:19 Uhr
kaihua



// run in Dev C++

C++:
#include <iostream>
#include <string>

using namespace std;


int main(){
    std::string str;
    std::cout<< str.max_size()<<std::endl; // Ergebnis ist 1073741820

    unsigned int max_size = string::npos;

    cout<<max_size<<endl;  // Ergebnis bleibt bei 4294967295
// die beiden Ausgaben sind nicht identisch, aber warum?

}




Ob das bedeutet, es ist compilerabhängig?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
27.04.2004, 21:26 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


naja das eine ist halt die maximal theoretisch mögliche zeichenanzahl.
die ist halt bei einem adressraum von 32 bit auf die 4294967295 beschränkt.

dsa andere ist dann vermutlich die maximale anzahl an zeichen die der compiler selber dann erlaubt. warum sich wer auf welche zahl festgelegt hat weiss ich nicht. Im zweifel bei sowas warten bis virtual seinen senf dazu gibt. der hat den standard ausweniggelernt möchte man meinen...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
28.04.2004, 10:18 Uhr
0xdeadbeef
Gott
(Operator)


Im STL-Manual von SGI steht folgendes:

static const size_type npos: The largest possible value of type size_type. That is, size_type(-1).
size_type max_size() const: Returns the largest possible size of the string.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: