Avatar billede mo-bo Nybegynder
24. september 2003 - 21:16 Der er 13 kommentarer og
1 løsning

string cin og 2 ord

Hey Jeg er c++ noob, og vil gerne smide 2 ord i en string variable, min kode ser sådan ud:

#include <iostream>
#include <string>
using namespace std;



void main(){

    string MemberName;    // Firstname lastname
    string MemberAdresse; // Adresse
    string MemberCity; // City
    string MemberNumber;   
    string MemberType; // private, Student, Firm
    int MemberZip; // Zipcode len = 4

    cout << "Indtast Medlems navn : ";
    cin >> MemberName;

    cout << "Indtast adresse: ";
    cin >> MemberAdresse;

    cout << "Indtast Postnummer : ";
    cin >> MemberZip;

    cout << "Indtast by : ";
    cin >> MemberCity;

    cout << "Indtast Medlems-nummer : ";
    cin >> MemberNumber;

    cout << "Indtast Medlems-Type : ";
    cin >> MemberType;
   

}


Men når jeg har indtastet mit navn, så tager den kun mit fornavn, som om den splitter på " " ( mellemrum ) Hvordan fikser jeg det ?
Avatar billede jpk Nybegynder
24. september 2003 - 21:25 #1
Prøv at skifte:
cin >> MemberName;
ud med:
getline(cin, MemberName, ' ');
Avatar billede mo-bo Nybegynder
24. september 2003 - 21:26 #2
nope sker det samme ?
Avatar billede jpk Nybegynder
24. september 2003 - 21:26 #3
vrøvl, med:
getline(cin, MemberName);
Avatar billede mo-bo Nybegynder
24. september 2003 - 21:29 #4
ja nu virker det, men nu skal man trykke Enter 2 gange før den går videre ?
Avatar billede mo-bo Nybegynder
24. september 2003 - 21:31 #5
Er det fordi jeg bruger "using namespace std;" istedet for at bruge .h i include ?
Avatar billede jpk Nybegynder
24. september 2003 - 21:32 #6
Hvad sker der hvis du bruger:
getline(cin, MemberName, '\r');
Avatar billede arne_v Ekspert
24. september 2003 - 21:34 #7
Generelt råd: bland aldrig 2 forskellige slags input.

Gæt: det giver problemer med at blande >> og getline.

Prøv med enten kun >> eller kun getline.
Avatar billede mo-bo Nybegynder
24. september 2003 - 21:36 #8
getline(cin, MemberName, '\r');

Så går den aldrig videre :D
Avatar billede mo-bo Nybegynder
24. september 2003 - 21:37 #9
Er det et problem i har set før, sys da det er vildt underligt
Avatar billede mo-bo Nybegynder
24. september 2003 - 21:39 #10
og hvordan vil i include i starten ?

lige som mig ?

#include <iostream>
#include <string>
using namespace std;
Avatar billede jpk Nybegynder
24. september 2003 - 21:41 #11
Hmm, det er en fejl i getline...
Fra MSDN:

BUG: getline Template Function Reads Extra Character

SYMPTOMS
The Standard C++ Library template getline function reads an extra character after encountering the delimiter. Please refer to the sample program in the More Information section for details.



RESOLUTION
Modify the getline member function, which can be found in the following system header file string, as follows:


    else if (_Tr::eq((_E)_C, _D))
                {_Chg = true;
              //  _I.rdbuf()->snextc(); /* Remove this line and add the line below.*/
          _I.rdbuf()->sbumpc();
                break; }

NOTE: Because the resolution involves modifying a system header file, extreme care should be taken to ensure that nothing else is changed in the header file. Microsoft is not responsible for any problems resulting from unwanted changes to the system header files.
Avatar billede arne_v Ekspert
24. september 2003 - 21:52 #12
Problemer med keyboard input og retur er ofte set.

Men hvis du bruger MS VC++ såprøv det jpk har fundet frem !
Avatar billede jpk Nybegynder
24. september 2003 - 21:57 #13
Ganske rigtig, fejlen ligger kun i VC++ 6.0!

Det virker fint i 7.0...
Avatar billede mo-bo Nybegynder
24. september 2003 - 22:32 #14
Tusinde tak, og ja helt rigtigt så sidder jeg med VC 6.0 :((
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