Avatar billede fedtoere Praktikant
15. marts 2004 - 23:34 Der er 7 kommentarer og
3 løsninger

3 string input i "samme linie" vha keyboard input

Jeg ønsker at lave en inputstreng som skal opdeles i 1 til 3 strenginput (adskildt af <space>, afsluttet med <CR>).

Hvis jeg benytter mig af:

cin >> string1 >> string2 >> string3;

Så får jeg godtnok de 3 stringe, men man kan så ikke nøjes med at indtaste f.eks de 2 første strenge.

Den funktionalitet jeg ønsker er at "brugeren" skal kunne indtaste f.eks "AND tal1 tal2" samtidigt skal "EXIT" også være en mulighed, intastningen skal afsluttes vha <return>.

Derefter skal enkeltdelene hentes ud fra stringen således at string1 = AND, string2 = tal1 og string3 = tal2.

Når disse er fundet ønsker jeg først at verificere:
if (string1 == "EXIT"){...} osv

Det behøves ikke nødvendigvis at blive kodet i C++, ANSI-C getchar() og lignende må også gerne benyttes.
Avatar billede bertelbrander Novice
16. marts 2004 - 00:11 #1
Du kunne starte med noget i stil med:

#include <iostream>
#include <strstream>

using namespace std;

int main()
{
  cout << "Skriv 1 - 3 ord: ";
  cout.flush();
  string input;
  getline(cin, input);
  string s[3];
  strstream ss;

  ss << input;
  int AntalOrd = 0;
  while(AntalOrd < 3 && ss)
  {
    ss >> s[AntalOrd];
    if(ss)
        AntalOrd++;
  }
  cout << "Du skrev " << AntalOrd << " ord" << endl;

  return 0;
}
Avatar billede fedtoere Praktikant
16. marts 2004 - 18:48 #2
Jeg tror godt jeg kan se hvor du vil hen.
Desværre ser det ud til at min compiler (Borland C++ ver 5.02) ikke supporterer std namespaces !!! Jeg har ihvertilfælde mine problemer med at compilere ovenstående kode.
Avatar billede bertelbrander Novice
16. marts 2004 - 20:14 #3
Prøv at ændre include til:

#include <iostream.h>
#include <strstream.h>

og fjerne:
using namespace std;

Ellers må vi have fat i en fgets() og strtok().
Avatar billede bertelbrander Novice
16. marts 2004 - 20:42 #4
En rigtig C løsning:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  char Line[124], Ord[3][124], *s;
  int NumOrd;

  printf("Skriv 1 - 3 ord: ");
  fflush(stdout);
  fgets(Line, sizeof(Line), stdin);
  NumOrd = 0;
  s = strtok(Line, " \n");

  while(s && NumOrd < 3)
  {
    strcpy(Ord[NumOrd++], s);
    s = strtok(NULL, " \n");
  }
  printf("Du skrev %d ord\n", NumOrd);

  return 0;
}
Avatar billede fedtoere Praktikant
16. marts 2004 - 23:18 #5
Undskyld, jeg burde have nævnt at jeg har prøvet #include<*.h> (pga den "gamle" compiler) uden held.

C løsningen konceptet ser det absolut ud til at jeg kan bruge, formatet passer mig også fint, da jeg kender lidt til de gamle C string manipulerings funktioner.

Nu har jeg blot et lidt pinligt afslutningspørgsmål, hvordan overfører jeg point til din "konto" ?
Avatar billede bertelbrander Novice
17. marts 2004 - 00:16 #6
Måske er det på tide at opdatere kompileren, f.ex. til Borland's gratis kommandolinie kompiler:

http://www.borland.com/products/downloads/download_cbuilder.html

Man kan kun give points for svar, hvis der er en der har hjulpet, men som kun har lavet kommentarer beder man normalt denne om at lave et svar.
Men jeg forsøger at undgå point, så du laver blot et svar selv, som du derpå accepterer, så bliver spørgsmålet lukket.
Avatar billede fedtoere Praktikant
17. marts 2004 - 21:33 #7
Mange tak for hjælpen.
Avatar billede fedtoere Praktikant
17. marts 2004 - 21:34 #8
point
Avatar billede bertelbrander Novice
17. marts 2004 - 23:03 #9
Du skal lige huske at acceptere dit svar.
Avatar billede fedtoere Praktikant
27. marts 2004 - 23:46 #10
OK
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