Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Hilfe mit cast operator

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 ] [ 3 ] [ 4 ] > 5 < [ 6 ]
040
17.11.2016, 09:42 Uhr
Joe1903




Zitat von ao:
Auf das, was snprintf zurückgibt. Lies in der Doku nach, was das ist. Das ist da genau beschrieben.


Ich hab das hier,funktioniert aber noch nicht.Weil BUFFER char ist und snprintf int zurückliefert.
Was kann ich machen damit es passt(ohne Typ von BUFFER zu ändern)?


C++:
...
operator char * () const
{
   if(snprintf(BUFFER,sizeof(BUFFER),"%d",n) >= BUFFER)
      printf("Not enough space");
      exit(1);
   else
      return BUFFER;
}

...


Dieser Post wurde am 17.11.2016 um 09:43 Uhr von Joe1903 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
041
17.11.2016, 12:53 Uhr
ao

(Operator)


Hier ist die entscheidende Stelle aus der snprintf-Beschreibung:


Zitat:

Return value:
The number of characters that would have been written if n had been sufficiently large, not counting the terminating null character.
If an encoding error occurs, a negative number is returned.
Notice that only when this returned value is non-negative and less than n, the string has been completely written.



Auf Deutsch: snprintf liefert die Anzahl Zeichen zurück, die zur Darstellung des Textes benötigt werden. Wenn diese Anzahl kleiner ist als die reingegebene Pufferlänge (also sizeof (BUFFER)), dann konnte der gesamte Text in den Puffer geschrieben werden. Ist die Anzahl größer oder gleich sizeof (BUFFER), dann fehlt am Ende ein Stück.
Wenn die Rückgabe negativ ist, ist irgendein Fehler passiert, und der Buffer-Inhalt ist sowieso nicht zu gebrauchen.

Das heißt für dich: Wenn du aus snprintf weniger als sizeof (BUFFER), aber was Positives rausbekommst, ist alles gut. Bekommst du das gleiche oder mehr, musst du "not enough space" ausgeben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
042
17.11.2016, 13:40 Uhr
Joe1903




Zitat von ao:
Hier ist die entscheidende Stelle aus der snprintf-Beschreibung:


Zitat:

Return value:
The number of characters that would have been written if n had been sufficiently large, not counting the terminating null character.
If an encoding error occurs, a negative number is returned.
Notice that only when this returned value is non-negative and less than n, the string has been completely written.



Auf Deutsch: snprintf liefert die Anzahl Zeichen zurück, die zur Darstellung des Textes benötigt werden. Wenn diese Anzahl kleiner ist als die reingegebene Pufferlänge (also sizeof (BUFFER)), dann konnte der gesamte Text in den Puffer geschrieben werden. Ist die Anzahl größer oder gleich sizeof (BUFFER), dann fehlt am Ende ein Stück.
Wenn die Rückgabe negativ ist, ist irgendein Fehler passiert, und der Buffer-Inhalt ist sowieso nicht zu gebrauchen.

Das heißt für dich: Wenn du aus snprintf weniger als sizeof (BUFFER), aber was Positives rausbekommst, ist alles gut. Bekommst du das gleiche oder mehr, musst du "not enough space" ausgeben.



Aber genau das habe ich doch in dem Post drüber..
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
043
17.11.2016, 13:43 Uhr
ao

(Operator)


Nein. Du musst nicht mit BUFFER vergleichen, sondern mit sizeof(BUFFER).

Sag mal bitte, was ist das für ein Kurs, den du da machst?

Dieser Post wurde am 17.11.2016 um 13:44 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
044
19.11.2016, 12:13 Uhr
Joe1903




Zitat von ao:
Nein. Du musst nicht mit BUFFER vergleichen, sondern mit sizeof(BUFFER).

Sag mal bitte, was ist das für ein Kurs, den du da machst?


Das ist kein Kurs.Es ist etwas kompliziert zu erklären.Kurz gesagt,hängt von den C++ Aufgaben ab,ob ich mein Job behalten darf,obwohl ich kein C++ Programmierer bin und im Job es auch nicht brauche...
Wie gesagt,etwas kompliziert.Wenn hier private Nachrichten möglich sind,kann ich es schreiben,aber so public möchte ich nicht tiefer ins Detail gehen.

Kann ich dir Fragen zu 3 Aufgaben stellen?Es werden meine letzten Fragen sein versprochen.

Dieser Post wurde am 19.11.2016 um 12:13 Uhr von Joe1903 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
045
20.11.2016, 09:12 Uhr
ao

(Operator)


OK, frag ruhig. Kann nur sein, dass ich heute nicht antworten kann.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
046
20.11.2016, 11:00 Uhr
Joe1903



1.Frage:

Ich möchte dieses Programm mit Pointern anstatt mit Vektorindizes haben.Wie macht man das?


C++:
...
int itoa(int n,char s[],int msize)

{
   int i;
   int sign;
   int digit;
   char const p[] = "0123456789";

   sign = n;
   i = 0;

   while(i < msize-1)
   {
      digit = abs(n%10);
      n/=10;
      s[i] = p[digit];
      i++;
      if(n == 0)
      {
         break;
      }
   }

   if(sign < 0 && i < msize-1)
   {
      s[i] = '-';
      i++;
   }

   else if(i >= msize-1)
   {
      return -1;
   }

   s[i] = '\0';

   reverse(s);

   return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
047
20.11.2016, 11:21 Uhr
Joe1903




Zitat:
Was macht operator _IMQSspServiceBase_Fetched_Function(void) und warum ist das nützlich?

Es könnte sein, dass das sowas hier ist: http://stackoverflow.com/questions/317450/why-override-operator

Edit: Entschuldige, Joe, ich wollte eigentlich zitieren und habe versehentlich deinen Post editiert.

Dieser Post wurde am 21.11.2016 um 09:12 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
048
21.11.2016, 09:17 Uhr
ao

(Operator)



Zitat von Joe1903:
1.Frage: Ich möchte dieses Programm mit Pointern anstatt mit Vektorindizes haben.Wie macht man das?


Du findest Hinweise hier: https://www.eskimo.com/~scs/cclass/notes/sx10e.html
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
049
23.11.2016, 14:59 Uhr
Joe1903




Zitat von ao:
[quote Joe1903]1.Frage: Ich möchte dieses Programm mit Pointern anstatt mit Vektorindizes haben.Wie macht man das?


Du findest Hinweise hier: [url]https://www.eskimo.com/~scs/cclass/notes/sx10e.html[/quote][/url]

Ok danke.

Wie würdest du diese Aufgabe lösen?

"Define two classes,each with a static member,so that the construction of each static member involves a reference to the other.Where might such constructs appear in real code?How can these classes be modified to eliminate the order dependencin the constructors?"

Ich habe eine Lösung gemacht(habe es auch in einem anderen Thread hier gepostet),aber leider nicht richtig.

Kannst du mir bitte ein Beispiel geben wie du es machen würdest?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] [ 4 ] > 5 < [ 6 ]     [ 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: