annA: Strings verketten in C++

Hallo zusammen,

ich möchte gerne in C++ einen Doubel-Wert mit einem String
verketten... bekomme es aber nicht hin, weil ich anscheinend
noch eine Typumwandlung machen muss.
(argument passing to 'const char *' from 'double')
Vielleicht verstehe ich ja auch die Fehlermeldung falsch,
aufjeden Fall bekomme ich es nicht hin :(

Hier mein Code:

#include <iostream>
#include <string>

int
main()
{
  char name[1024];
  char* test = " ist so schwer ";
  double gewicht;

cout << "Geben Sie Ihren Namen ein: ";
  cin >> name;

cout << "Wie schwer sind Sie? ";
  cin >> gewicht;

strcat(name, test);
  strcat(test, gewicht);

cout << name;
}

Vielen Dank und viele Grüße
annA

  1. Moin,
    Warum benutzt du kein String Objekt?

    std::string txt = " ist so schwer ";
    std::string name;
    cin >> name
    cout <<  name << txt << std::endl;

    chars sind für einzelne Zeichen gedacht. Ausserem laesst du einem Zeiger auf ein char Objekt zeigen (was völlig unnötig ist,weil du dich sowieso gerade auf dem Stack bewegst), dereferenzierst aber später nicht, sondern versuchst den Zeiger als String zu beackern. Ist, glaube ich, alles ziemlich durcheinander (habe allerdings lange kein C++ mehr gemacht).
    Guck doch mal hier:

    http://www.josuttis.com/cppbuch/allg/string1.cpp.html

    Da werden ein paar Basics erklärt. Ansonsten ist vieles gut erklärt in C++ in 21 Tagen von Markt und Technik.

    Gruss
    Ralf

    1. Hi Ralf,

      das eigentliche Programm soll nicht Namen und Gewicht ausgeben.
      Wir sollen eine Klasse Rechteck schreiben die unter anderem
      die folgende Methode haben soll:

      char* gibPrintString(), welche einen String mit der Beschreibung
      aller Attribute der Klasse zurück gibt.
      Und da ist es mein Problem diesen String zu erzeugen, der
      vom Typ char* sein muss!...

      Viele Grüße
      annA

  2. Hi annA

    ich möchte gerne in C++ einen Doubel-Wert mit einem String
    verketten... bekomme es aber nicht hin, weil ich anscheinend
    noch eine Typumwandlung machen muss.

    Du machst das in C, nicht in C++, wenn es C++ wäre, würdest du auch C++ Strings verwenden.

    Ansonsten, schau dir mal sprintf() resp snprintf()(glaub ich die sichere heisst so) an, funktioniert wie printf, ausser dass die Funktion einen C-String ausgibt.

    Gruss Daniela

    --
    Nein, wir frieren unsere Hühner nicht auf Gletschern fest.
    Selfcode: sh:) fo:) ch:) rl:) br:> n4:| ie:{ mo:) va:) de:] zu:} fl:( ss:) ls:&
    1. Hi Daniela,

      es ist C++, die Aufgabenstellung gibt mir aber die Benutzung von
      C-Strings vor (warum um auch immer...=

      Gruss
      annA