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

Superwayne

Treue Seele

  • »Superwayne« ist der Autor dieses Themas

Beiträge: 242

Beruf: Student & App Entwickler (Xamarin)

  • Private Nachricht senden

1

27.04.2014, 19:04

[erledigt] g++ compiler error (expected unqualified-id)

Hallo,

wir haben bei unserem Studium eine Aufgabe bekommen, in C++ eine ASCII Zeichentabelle auszugeben:

Aufgabe 4
Um festzustellen, ob Ihr Rechner auch wirklich den ASCII-Zeichensatz verwendet, sollen die
druckbaren Zeichen (ASCII-Code 0x20 ... 0x7e) als Tabelle ausgeben werden. Anstelle der
nicht druckbaren Zeichen wird ein Punkt als Ersatzzeichen ausgegeben. Schreiben Sie dazu
ein Programm, das die folgende Ausgabe erzeugt:

Nun habe ich versucht das wiefolgt zu lösen:

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
#include <iostream>

using namespace std;


void ASCIITabelle(){

    cout << "  1 2 3 4 5 6 7" << endl;
    for(int i = 0x0; i <= 0xf; i++){
        for(int j = 0x0; j <=0x7; j++){

            string s = "0x" + std::to_string(j) + std::to_string(i);
            int zahl = atoi(s.c_str());
            if(j == 0x0){
                cout << i << " ";
            }
            cout << std::toascii(zahl) << " ";
            if(j == 0x7){
                cout << endl;
            }
        }
    }
}



Nun meckert aber der g++ compiler:

..\src\Uebung2\uebung2.cpp: In function 'void ASCIITabelle()':
..\src\Uebung2\uebung2.cpp:120:17: error: expected unqualified-id before '(' token
cout << std::toascii(zahl) << " " << endl;
^

Was bedeuted das "expected unqualified-id"?

Generell kann es sein, dass die Aufgabe auch schöner lösbar ist, das war nur das erste, was mir eingefallen ist, ohne einfach nur mit cout alles direkt auszugeben..

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Superwayne« (28.04.2014, 08:02)


Cookiezzz

Frischling

Beiträge: 91

Wohnort: Deutschland

Beruf: Schüler

  • Private Nachricht senden

2

27.04.2014, 19:07

Um std::toascii benutzen zu können muss <ctype.h> eingebunden werden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Cookiezzz« (27.04.2014, 19:14)


Superwayne

Treue Seele

  • »Superwayne« ist der Autor dieses Themas

Beiträge: 242

Beruf: Student & App Entwickler (Xamarin)

  • Private Nachricht senden

3

27.04.2014, 19:31

Um std::toascii benutzen zu können muss <ctype.h> eingebunden werden.


Hmm aber dann würde der Compiler normalerweise melden, dass er die toascii kein member von std wäre, oder? Habe mal #include <ctype.h> eingefügt, aber der Fehler ist der selbe. Habe auch noch die cstdlib für eine andere Funktion inkludiert (kann man das nicht schöner sagen?), falls das was damit zu tun hat.

4

27.04.2014, 19:35

Std ist ein namespace, toascii ist daher kein member.

Du kannst die std:: in deinem Code weg lassen, da du "using namespace std;" angibst
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

5

27.04.2014, 19:41

Zitat von »C++ Standard«

Header <cctype> synopsis:
Functions:
isalnum isblank isdigit isprint isupper
tolower isalpha isgraph ispunct isxdigit
toupper iscntrl islower isspace
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

Cookiezzz

Frischling

Beiträge: 91

Wohnort: Deutschland

Beruf: Schüler

  • Private Nachricht senden

6

27.04.2014, 19:42

Toascii ist aber keine Funktion, sondern ein Makro.

Superwayne

Treue Seele

  • »Superwayne« ist der Autor dieses Themas

Beiträge: 242

Beruf: Student & App Entwickler (Xamarin)

  • Private Nachricht senden

7

27.04.2014, 19:43

Std ist ein namespace, toascii ist daher kein member.

Du kannst die std:: in deinem Code weg lassen, da du "using namespace std;" angibst



Ups, stimmt. Hatte das std:: noch stehen lassen, damit ich lerne, wo es herkommt.
Das mit dem member macht Sinn, ich glaube aber, ich weiß nur nicht das richtige Wort. Bevor ich den C++11 Standard zum Laufen bekommen habe, hatte ich immer eine Fehlermeldung, dass "to_string" nicht in std enthalten sei.

Ohne std:: funktioniert es jetzt, aber ich verstehe nicht wieso 8| Ob ich nur toascii oder std::toascii eingebe, ist doch das selbe, oder nicht?

Jetzt muss ich mir nur noch mal anschauen, wieso die Tabelle nur Nullen enthält :D

8

27.04.2014, 19:44

Toascii ist nicht im std namespace deklariert. Wenn du std::toascii schreibst, sucht der Compiler in diesem namespace jedoch...
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

9

27.04.2014, 19:48

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
#include <iostream>

using namespace std;


int main()
{

    cout << "  1 2 3 4 5 6 7" << endl;
    for(int i = 0x0; i <= 0xf; i++)
    {
        for(int j = 0x0; j <=0x7; j++)
        {

            string s = "0x" + std::to_string(j) + std::to_string(i);
            int zahl = atoi(s.c_str());
            if(j == 0x0)
            {
                cout << i << " ";
            }
            cout << toascii(zahl) << " ";
            if(j == 0x7)
            {
                cout << endl;
            }
        }
    }
}


Hab mir erlaubt die Klammerfehler und den Einstiegspunkt zu korrigieren, deswegen bevorzuge ich btw auch dieses Eine-Klammer-Pro-Zeile-Layout, so kommt man weniger durcheinander mit den Klammern.
Das da kompiliert.

EDIT: Du benutzt den C++11 Standard aber kein C++11? Sachen gibts...

MfG
Check

10

27.04.2014, 19:50

Zitat

Jetzt muss ich mir nur noch mal anschauen, wieso die Tabelle nur Nullen enthält


atoi konveriert nur Strings, die Integerzahlen darstellen. Nutze strtol stattdessen.

Weitere Informationen: http://h30097.www3.hp.com/docs/base_doc/…N3/0104____.HTM
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

Werbeanzeige