die Erkennung von Leerzeichen, \t, \n, usw.

Arbeite ich mit c++ primer 5th edition. die übung in Kapitel 5 nennt die Folgen:

Übung 5.11: Schreiben Sie ein Programm, dass zählt die Anzahl der Leerzeichen, tabs und Zeilenumbrüche zu Lesen.

Ich versucht, zu tun, als übung 5.11 es mit dem code unten. Aber der code nicht funktioniert. Kann mir jemand einige Beispiele nennen, wie ich den korrigieren Sie den code, so dass, wenn die Eingabe gelesen, dass der Zähler unsigned int cnt = 0; wird iteriert, richtig?

#include "stdafx.h"
#include <iostream>

int main(){
    unsigned int cnt = 0;
    char c1;
    while (std::cin >> c1)
        if (c1 == '\t' || c1 == '\n' || c1 == ' ')
            ++cnt;
    std::cout << "The number of spaces,tabs, newlines are: " << cnt << std::endl;

    system("pause");
    return 0;
}
  • '/n' solche Sache nicht existiert. Ich glaube, Sie meinte '\n'.
  • Ist das ein Tippfehler? c1 == '/n'. Es sollte c1 == '\n'.
  • Was genau meinst du mit "der code nicht funktioniert?" Welche Ausgabe bekommst du, und was erwarten Sie?
  • Ich schlage vor, Sie immer kompilieren mit -Wall -Wextra -pedantic, und beseitigen Sie alle Warnungen. Es soll davor gewarnt haben, die Sie über die Verwendung einer multi-character-Konstante.
  • Nicht system("pause") Lesen einer Zeile von std::cin statt.
  • sicherlich meinst du ignore() etwas wie in std::cin.ignore();? Beachten Sie, dass sowohl eine Zeile zu Lesen und ignorieren, alles andere hat die etwas unglückliche problem, dass es auszuschließen erfolgreich, wenn die Letzte operation auf std::cin war ein formatiertes Lesen: wenn dem so ist, solltest du zunächst ignorieren wollen, das nachfolgende Zeichen auf der Linie mit std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');. Ich jedenfalls glaube nicht, dass system("pause"); sollte verwendet werden, aber wir müssen wirklich eine gute alternative. Auch std:cin.ignore(std::cin.rdbuf()->in_avail()) ist nicht wesentlich besser...
  • vielleicht sollten Sie einen Blick auf cplusplus.com/doc/tutorial/basic_io im Abschnitt "cin und Streicher"
  • Dan Korn: was ich damit meine-fail ist, der code nicht count(cnt) der tab, Leerzeichen oder neue Zeile als ich einen Versuch, um den code zu erhalten, um zu tun. Was erwarte ich als Ausgabe für das Beispiel: Input = "Dies ist ein test". die Ausgabe sollte ""Die Anzahl der Leerzeichen,tabs, newlines sind: 3", da gab es 3 Leerzeichen in der Eingabe. @Havenard: ja, es ist ein Tippfehler. ich will fix it in the post. @ ZMBQ: ich bin mit microsoft VB 2013 express. ich verwendet system("pause"); pause das terminal-Bildschirm.

InformationsquelleAutor Matt | 2014-12-22
Schreibe einen Kommentar