konvertiert String in size_t

7

Gibt es eine Möglichkeit, std::string in size_t zu konvertieren? Das Problem ist, dass size_t plattformverantwortlicher Typ ist (während es das Ergebnis von sizeof ist). Daher kann ich nicht garantieren, dass die Konvertierung von string in unsigned long oder unsigned int es richtig macht.

BEARBEITEN: Ein einfacher Fall ist:

%Vor%     
Humam Helfawi 02.12.2015, 13:25
quelle

5 Antworten

6

Sie können %zd als Formatspezifizierer in einem scanf -Ansatz verwenden.

Oder verwenden Sie std::stringstream mit einem überladenen >> bis size_t .

    
Bathsheba 02.12.2015, 13:35
quelle
6

Vielleicht möchten Sie sscanf mit dem %zu -Spezifizierer verwenden, was für std::size_t gilt.

%Vor%

Sehen Sie sich hier an.

Ich bezweifle buchstäblich, dass es ein überladenes operator >> von std::basic_istringstream für std::size_t gibt. Siehe hier .

    
Lingxi 02.12.2015 13:34
quelle
4

Lassen Sie uns für eine Minute annehmen, dass size_t eine typedef zu einer existierenden ganzen Zahl ist, dh die gleiche Breite wie unsigned int , unsigned long oder unsigned long long .

AFAIR it könnte ein separater (größerer noch) Typ sein, was die Standardformulierung betrifft, aber ich halte das für sehr unwahrscheinlich.

Mit dieser Annahme arbeitend, dass size_t nicht größer ist als unsigned long long , entweder stoull oder strtoull mit anschließendem Cast auf size_t sollte funktionieren.

Unter derselben Annahme ( size_t definiert in unsigned long oder unsigned long long ) wäre eine operator>> Überladung für diesen Typ.

    
DevSolar 02.12.2015 13:43
quelle
3

Sie können std::stringstream

verwenden %Vor%     
Yuriy Orlov 02.12.2015 13:36
quelle
1
%Vor%

Mit iss.fail () überprüfen Sie den Fehler. Verwenden Sie anstelle von ("a") den Wert, den Sie konvertieren möchten.

    
selin kamaş 02.12.2015 13:41
quelle

Tags und Links