Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » string.size() verhält sich merkwürdig

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 <
000
26.11.2015, 16:08 Uhr
Yadgar



Hi(gh)!

Die Länge eines Eingabe-Parameters soll ermittelt werden (um anschließend daraus vom Ende ausgehend mit substr() auf Vorhandensein von ".tga" prüfen zu können):

green = string(argv[5]);

cout << green.size() << endl;

Beim Aufruf von green.size() bekomme ich immer folgende Fehlermeldung:

terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid

Warum?

Wenn ich eine andere string-Funktion (z. b. find()) verwende oder sogar den ganzen in Frage kommenden Block auskommentiere, bekomme ich trotzdem die o. g. Fehlermeldung!

Ich bin mal wieder mit meinem Latein am Ende... HILFE!!!

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog

Dieser Post wurde am 26.11.2015 um 16:15 Uhr von Yadgar editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.11.2015, 06:34 Uhr
Yadgar



Hi(gh)!

Problem gelöst! Ich hatte ein "return 0;" vergesssen...

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.11.2015, 10:12 Uhr
ao

(Operator)



Zitat von Yadgar:
Ich hatte ein "return 0;" vergesssen...

Das kenne ich, nach solchen Fehlern habe ich auch schon lange suchen müssen. Das gibt die verrücktesten Symptome.

Du solltest dir hier vom Compiler helfen lassen, indem du
1. den höchstmöglichen Warninglevel einschaltest und es dir zum Prinzip machst, alle auftretenden Warnungen zu beseitigen. Bei gcc zum Beispiel heißt der entsprechende Compiler-Schalter -Wall
2. nach Möglichkeit "missing return statement" als Fehler behandeln lässt, der die Kompilierung stoppt. gcc: -Werror=return-type

Dieser Post wurde am 27.11.2015 um 10:12 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.11.2015, 21:06 Uhr
Hans
Library Walker
(Operator)


Hi,

sehr interessant. - Ich hab das jetzt mal unter Kubuntu mit g++ (gcc) getestet und da lief es so wie es soll. Mein Testprogramm sah so aus:

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

using namespace std;

int main(int argc, char *argv[])
{
  string red, green, blue, filename, fileext;

  if (argc<2)
    { cout << "Fehler; zuwenig Eingabeparameter." << endl;
    }

  filename = argv[0];
  fileext  = "";

  red   = argv[2];
  green = argv[3];
  blue  = argv[4];
  
  cout << "Green Size: " << green.size() << endl;
  cout << "Red Size: " << red.size() << endl;
  cout << "Blue Size: " << blue.size() << endl;
  
  cout << "Filename: " << filename << endl;
  
  return 0;
}



Das funktionierte auch mit auskommentiertem "return 0;"

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: