Forum: Mara in flera ord

Forum huvudsida -> Programmering -> Mara in flera ord

Sidor: 1

Till botten

JagEEnLjugare 18:26 - 27:e Januari 2006 | Post #1
Medlem
Inlägg: 10


Skicka PM
Jag behöver hjälp med att mata in fler ord i en tecken sträng.
Så här ser koden ut:
  1. #include <iostream>
  2.  
  3. struct bil
  4. {
  5. std::string namn;
  6. int tillverkad;
  7. };
  8.  
  9. int main()
  10. {
  11. using namespace std;
  12. int x;
  13. cout << "Hur många bilar vill du katalogisera? ";
  14. int antal;
  15. cin >> antal;
  16. bil * bilar = new bil[antal];
  17. for (x = 0;x != antal;x++)
  18. {
  19. cout << "Bil " << x + 1 << endl;
  20. cout << "Ange märke: ";
  21. //Behöver kunna mata in flera ord i denna sträng
  22. cin >> bilar[x].namn;
  23. cout << "Ange tillverkningsår: ";
  24. cin >> bilar[x].tillverkad;
  25. }
  26. cout << "Här är din samling:\n";
  27. for (x = 0;x != antal;x++)
  28. {
  29. cout << bilar[x].tillverkad << " " << bilar[x].namn << endl;
  30. }
  31.  
  32. cin.get();
  33. cin.get();
  34. return 0;
  35. }


-------------------------
Ingen signatur!



Independence 18:44 - 27:e Januari 2006 | Post #2
Administratör
Inlägg: 1800


Skicka PM
Tror du kan använda cin.getline(); för det. Typ:
  1.  
  2. bilar[x].namn = cin.getline();


-------------------------

Vi är riddarna som säger fiskbulle!





JagEEnLjugare 19:14 - 27:e Januari 2006 | Post #3
Medlem
Inlägg: 10


Skicka PM
Testade med det du sa men jag får dessa fel:

In function `int main()':

23 no matching function for call to `std::basic_istream<char, std::char_traits<char> >::getline()'

note candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::getline(_CharT*, std::streamsize, _CharT) [with _CharT = char, _Traits = std::char_traits<char>]

note std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::getline(_CharT*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>]

-------------------------
Ingen signatur!



Independence 20:56 - 27:e Januari 2006 | Post #4
Administratör
Inlägg: 1800


Skicka PM
Hmm, kanskke är såhär man anropar den då:
  1.  
  2. cin.getline(chararray);


Ser ju dock inte så bra ut med en chararray i ett C++-program tycker jag, möjligt att det går att göra på något annat sätt. Om du väljer att ha en chararray kan du ju skicka den till string:en med stringstream iaf.

-------------------------

Vi är riddarna som säger fiskbulle!





JagEEnLjugare 21:19 - 27:e Januari 2006 | Post #5
Medlem
Inlägg: 10


Skicka PM
Jag böt ut strängen mot en charvektor så funkade allt fint.
EDIT: Läste att en del kompilatorer inte tillät strängar i strukturer

-------------------------
Ingen signatur!

Senast redigerad 21:22 - 27:e Januari 2006


Celeron 07:59 - 28:e Januari 2006 | Post #6
Medlem
Inlägg: 418


Skicka PM
Om kompilatorn inte tillåter strängar i en struct så är det fel på kompilatorn. Men "felet" här är att cin avslutar inläsningen när man trycker mellanslag, den läser alltså inte in mer efter det. Om du vill använda string (vilket är bra att göra) så kan du göra så här:
  1.  
  2. getline(cin,bilar[x].namn);


-------------------------
Det viktigaste är att ha roligt! Har ny hemsida: http://www.freewebs.com/cpperik/



JagEEnLjugare 10:31 - 28:e Januari 2006 | Post #7
Medlem
Inlägg: 10


Skicka PM
    Citat av Celeron:
Om kompilatorn inte tillåter strängar i en struct så är det fel på kompilatorn. Men "felet" här är att cin avslutar inläsningen när man trycker mellanslag, den läser alltså inte in mer efter det. Om du vill använda string (vilket är bra att göra) så kan du göra så här:
  1. getline(cin,bilar[x].namn);


Testade med
getline(cin,bilar[x].namn);
och då funkade det med en sträng i strukturen^^

Tack så hemsk mycket med all hjälp jag fått

-------------------------
Ingen signatur!



Sidor: 1

Forum huvudsida -> Programmering -> Mara in flera ord
Atom feed

Du får inte posta i den här tråden | Till toppen