strlen frage .....

bspainkf36

Erfahrenes Mitglied
hi,

ich hab mir ein kleines prog gebastelt und wollte mit dem befehl strlen die länge einer string variable ausgeben lassen. Das prog ist jedoch das es mit diesem befehl nur mit char variablen geht. Kenn jemand eine andere lösung.

Also ich will nur die länge einer string variable herausfinden. Thx
 
hmm ich glaube du verstehst mich nicht ganz

PHP:
string bla;

bla="hallo";

x=strlen(bla);

cout << x << "die länge der variable bla" << endl;

so will ich das machen aber es geht nicht mit string

nur mit char. Wenn ich das mit char machen müsste, müsste ich
meinen ganzen quellcode umschreiben.

Weiß jemand weiter ?

tHx kOn
 
Könntest Du mir sagen, aus welcher Bibliothek bzw. Entwicklungsumgebung der Typ string ist!
Dann könnte ich Dir vielleicht weiterhelfen.
 
char-Arrays sind normale Variablen, Strings in C++ sind Objekte. Das heisst natürlich auch, dass sie Methoden haben. Zum Beispiel die Methode length():
Code:
cout << bla.length() << endl;
 
hmm jo die länge von einer string variable brauch ich nur um nacher bei der ausgabe einer tabelle, die ausgabe so zu gestalten damit alles einheitlich aussieht.

Also bei zahlen hab ich den befehl setw() genommen, jedoch funzt es bei string variablen net so wie ich das will. Also in dem programm erstell ich 20 member, indem man unter anderem hersteller und bezeichnung eingeben kann. Die jedoch aber immer ne andere zeichenlänge haben und darum auch die spätere ausgabe natürlich schief wird :(

Hmmm poste einfach mal den quellcode:

HEADER DATEI (LagerFunk1of3.h)
PHP:
#ifndef Lager_h
#define Lager_h


class Lager
{

  private:
             long int m_ArtikelNr;
             string m_Hersteller;
             string m_Bezeichnung;
             long int m_Bestand;
             long int m_Meldebestand;

  public:
             //Konstruktor
             Lager();
             
             Lager(int melde);

             //Destruktor
             ~Lager();

             //Methoden
             void Zugang(int menge);
             void Abgang(int menge);
             int ZeigArtikelNr(void);
             string ZeigHersteller(void);
             void SchreibHersteller(string hersteller);
             string ZeigBezeichnung(void);
             void SchreibBezeichnung(string bezeichnung);
             int ZeigBestand(void);
             int ZeigMeldebestand(void);
};

#endif

METHODEN (LagerFunk2of3.CPP)
PHP:
#include <iostream.h>
#include <conio.h>
#include <string>
#include "LagerFunk1of3.h"

static int AutoWertArtikel = 1;

Lager::Lager()
{
}

Lager::Lager(int melde)
{
  m_ArtikelNr = AutoWertArtikel++;

  m_Hersteller = "unbekannt";
  m_Bezeichnung = "nicht vorhanden";
  
  m_Bestand = 0;
  m_Meldebestand = melde;
}

Lager::~Lager()
{
}

void Lager::Zugang(int menge)
{
  m_Bestand +=menge;
}

void Lager::Abgang(int menge)
{
  if(m_Bestand - menge < m_Meldebestand)
  {
    cout << "Bitte sofort den Artikel nachbestellen!" << endl;
    cout << "Es koennen sofort nur " << (m_Bestand - m_Meldebestand) << " Stueck";
    cout << "Die uebrigen " << (menge-(m_Bestand-m_Meldebestand)) << endl;
    cout << "muessen zu einem spaeteren Zeitpunkt nachgeliefert werden:" << endl;
    m_Bestand -= m_Meldebestand;
  }
  else
  {
   m_Bestand -=menge;
  }
}

int Lager::ZeigArtikelNr(void)
{
  return m_ArtikelNr;
}

string Lager::ZeigHersteller(void)
{
 return m_Hersteller;
}

void Lager::SchreibHersteller(string hersteller)
{
  m_Hersteller = hersteller;
}

string Lager::ZeigBezeichnung(void)
{
  return m_Bezeichnung;
}

void Lager::SchreibBezeichnung(string bezeichnung)
{
  m_Bezeichnung=bezeichnung;
}

int Lager::ZeigBestand(void)
{
  return m_Bestand;
}

int Lager::ZeigMeldebestand(void)
{
 return m_Meldebestand;
}

MAIN (LagerFunk3of3.CPP)
PHP:
#include <string>
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include "LagerFunk2of3.cpp"

void main (void)
{
  char auswahl;

  string  hersteller,
          bezeichnung;

  int i,
      melde=0,
      menge=0;

  Lager *LagerArtikel[20];

  for(i=0;i<=19;i++)
  {
    melde+=5;
    LagerArtikel[i] = new Lager(melde);
  }

  do
  {
    clrscr();
    cout << "Lagerfunk Prog" << endl << endl;

    cout << "<1> Zugang zum Lagerbestand" << endl;
    cout << "<2> Abgang vom Lagerbestand" << endl;
    cout << "<3> Ausgabe einer Lagerbestandsliste " << endl;
    cout << "<0> Ende des Programms" << endl;

    cin >> auswahl;

    switch(auswahl)
    {
      case '1':
        clrscr();
        cout << "Zugang zum Lagerbestand" << endl << endl;

        cout << "Artikelnummer: " ;
        cin >> i;
        i--;

        cout << "Menge: ";
        cin >> menge;
        LagerArtikel[i]->Zugang(menge);

        cout << "Hersteller: ";
        cin >> hersteller;
        LagerArtikel[i]->SchreibHersteller(hersteller);

        cout << "Bezeichnung: ";
        cin >> bezeichnung;
        LagerArtikel[i]->SchreibBezeichnung(bezeichnung);

        getch();
      break;

      case '2':
        clrscr();
        cout << " Abgang vom Lagerbestand" << endl;

        cout << "Artikelnummer: " ;
        cin >> i;
        i--;

        cout << "Menge: ";
        cin >> menge;
        LagerArtikel[i]->Abgang(menge);
        getch();
      break;

      case '3':
        clrscr();
        cout << "Ausgabe einer Lagerbestandsliste " << endl << endl;
        cout << "Art.Nr.\tHersteller\tBezeichnung\tMeldeBestand\tBestand" << endl;
        for(i=0;i<=19;i++)
        {
          cout << setw(7) <<LagerArtikel[i]->ZeigArtikelNr() << " ";
          cout << LagerArtikel[i]->ZeigHersteller() << " ";
          cout << LagerArtikel[i]->ZeigBezeichnung()<< " ";
          cout << setw(12) <<LagerArtikel[i]->ZeigMeldebestand() << "    ";
          cout << setw(7) <<LagerArtikel[i]->ZeigBestand()<< endl;
        }
        getch();
      break;

      case '0':
        clrscr();
        cout << "Das Programm wird beendet !!!" << endl;
      break;

      default:
        clrscr();
        cout << "Falsche Eingabe !!!" << endl;
        getch();
      break;
    }
  }
  while(auswahl!='0');

  getch();
}

hmmm ja vielleicht hilft euch das weiter ?
Also ich lediglich das die ausgabe von m_Hersteller und m_Bezeichung immer linksbündig ist egal wie lang das wort ist. Also bei der ArtikelNr funzzt das auch gut aber halt nur bei den verflixten zeichen net ahhhh :(

thX koN
 
weil ich ganzes prog umschreiben müsste. Hab ich aber schon mal erwähnt :p

Also ich habs aber schon gelöst :)

Habs als datei angehängt. Für Laien ist auch die exe bei :)
 

Anhänge

  • lagerfunk3of3.zip
    44,8 KB · Aufrufe: 13

Neue Beiträge

Zurück