Avatar billede thomassoerensen Nybegynder
06. februar 2002 - 10:00 Der er 6 kommentarer og
1 løsning

End-of-file for string?

Hej Eksperter
Kan I forklare mig hvordan jeg giver mit program besked om at mit input ender nu og det skal eksekvere resten af program koden når mit input er string?

Ved doubles er det let idet jeg bare taster et bogstav, og da det er en ulovlig double, betragter programmet det som en end-of-file indikator, og kører resten af programmet.

Hvad er en ulovlig værdi for en string?
Eller kan jeg selv definere end-of-file værdien i mit program?

Avatar billede jpk Nybegynder
06. februar 2002 - 10:03 #1
Du skal selv definere et tegn (eller sekvens)
Du kan jo fx vælge <ENTER>
Avatar billede thomassoerensen Nybegynder
06. februar 2002 - 10:05 #2
Hvordan definerer jeg ENTER som end-of-file indikator?
Avatar billede chries Nybegynder
06. februar 2002 - 10:48 #3
jeg forstår ikke helt hvad ud har gang i ?

Når man instaster en streng, afslutter man normalt med enter ? strengen nul termineres så af rutinen til at indlæse strengen med.

f.esk:
char streng[128];
cout << "indtast streng: ";
cin >> streng;
cout << streng << endl;
output:
indtast streng: skriver_selv_streng_ind (og trykker enter)
skriver_selv_streng_ind

(kan være der mangler et par endl, men er ikke vigtig i sammenhænget)
Avatar billede thomassoerensen Nybegynder
06. februar 2002 - 12:05 #4
Her er min kode, hvor jeg har problemer med at afslutte mit input:

// ex03-03.cpp
// A program that counts how many times a distinct work appears in the input

#include <conio>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using std::cout;
using std::string;
using std::cin;
using std::endl;
using std::vector;
using std::count;

int main()

{
    // ask for input
    cout << "Please enter input to be analyzed: ";
    vector<char> input;
    char inp;
    // invariant: input contains all the input words
    while (cin >> inp)
        input.push_back(inp);

    cout << endl << "The number of entries in the vector is " << input.size()
    << "!" << endl;
    int i = 0;
    char testword = 'test';
    count(input.begin(), input.end(),testword,i);
    cout << "The number of 5's in the input are: " << i;

    getch();
    return 0;
}
Avatar billede thomassoerensen Nybegynder
06. februar 2002 - 12:11 #5
Koden kopilerer fint nok i "Borland C++ Builder 5.0 Standard Update Pack 1", men når jeg trykker på <enter> for at afslutte mit input flytter curseren bare til næste linje og afventer mere input.
Ppå den måde ekseveres resten af programmet aldrig.

Det er derfor jeg gerne vil vide hvordan jeg definere en sekvens der læses af programmet som "nu er input slut, eksekver næste step i koden".
Avatar billede thomassoerensen Nybegynder
06. februar 2002 - 12:13 #6
Chries! Jeg opretter et nyt spørgsmål med syntaxen for at definere <Enter> som end-of-file indicator så du kan få point når jeg engang har fattet svaret. OK?
Avatar billede soepro Nybegynder
06. februar 2002 - 13:05 #7
Lav denne her ændring i dit program:

// invariant: input contains all the input words
while (cin >> inp && inp != eosChar)
  input.push_back(inp);

idet du så definerer 'char eosChar = '\x1B';' (for ESC som afslut) eller 'char eosChar 0 '\r';' (for ENTER)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester