Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Wirago

Alter Hase

  • »Wirago« ist der Autor dieses Themas

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

1

10.04.2015, 09:35

[gelöst] char array zur Laufzeit (neu) initialisieren

Ich möchte eine Ziffernfolge die der Benutzer eingibt Ziffer für Ziffer überprüfen. In einem Fall habe ich eine definierte Länge, in einem anderen eine beliebige Länge.
Für die definierte Länge ist es ja noch easy, da habe ich das so gelöst (exemplarisch):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
char arr[4];
cout << "4 stelligen Code eintragen" << endl;
cin >> zahl;

for(int i=0; i<4; i++)
{   
   if(arr[i] == ... ) //do something
}


Jetzt gibt es aber den Fall, dass der Benutzer im cin einen beliebig langen Code eintragen kann. Damit müsste ich das Array erst beim cin initialisieren. Da ich aber beireits bei der Deklaration eine Göße angeben muss, klappt das so natürlich nicht.
Die Bedingung in der for Schleife kann ich dann ja dynamisch mit i < (sizeof(arr) / sizeof(arr[0])) setzen meine ich, aber wie bekomme ich die Werte in mein Array rein?
Ich würde das gerne mit einem char Array umsetzen, wenn das damit nicht geht, dann eben anders :)
Google hat mir dazu nicht wirklich die Antworten geliefert dich wollte.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Wirago« (12.04.2015, 11:02)


Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

2

10.04.2015, 09:58

Benutz nen std::string und häng immer das letzte Zeichen an. ;)
Vielleicht geht es noch etwas schöner, aber das ist schon mal die richtige Richtung.
Nen nackter char Array ist immer etwas gefährlich.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

Wirago

Alter Hase

  • »Wirago« ist der Autor dieses Themas

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

4

10.04.2015, 10:04

Gut, dann eben doch string. Hab überlegt, ob das per char Array auch geht, aber gut. Danke.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

10.04.2015, 13:11

In Java oder C# würdest du ja auch kein Char Array nehmen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

6

10.04.2015, 13:13

Gut, dann eben doch string. Hab überlegt, ob das per char Array auch geht, aber gut. Danke.
Ja, das geht per Char Array. Am besten wenn das von einem std::string verwaltet wird.

7

11.04.2015, 21:50

Vielleicht hilft dir das hier weiter

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>




int main()
{
    int nGröße;
    char *chCode = NULL;
    char Test = '5';
    
    std::cout << "Codelaenge eingeben!";
    std::cin >> nGröße;
    
    chCode = new char[nGröße];

    for (int i = 0; i < nGröße; i++)
    {
        chCode[i] = Test;
        Test++;
    }

    for (int i = 0; i < nGröße; i++)
    {
        std::cout << chCode[i] << std::endl;
    }
    delete[] chCode;
    chCode = NULL;
    std::cin.sync();
    std::cin.get();

}

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

11.04.2015, 21:59

1) Vorsagen hilft keinem
2) Das Beispiel löst das Problem nicht
3) std::string wurde ja schon genannt. Andere Lösungen sind unsinnig.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Wirago

Alter Hase

  • »Wirago« ist der Autor dieses Themas

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

9

12.04.2015, 11:02

Ich habe es bereits per std::string gelöst, aber trotzdem danke.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

10

12.04.2015, 12:58

std::stringstream?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige