Forum: Hjälp

Forum huvudsida -> Programmering -> Hjälp

Sidor: 1

Till botten

RevHead 17:24 - 25:e Februari 2008 | Post #1
Medlem
Inlägg: 2


Skicka PM
Hejsan

Först vill jag bara tacka de eller den som gjort denna sidan. Guiderna är mycket bra genomförda och lättförklarade. Tack!

Har kommit till ''Variabler-guiden'' och har fått ett litet problem.

I första guiden ''Gör ditt första program'' stog det såhär:

Om programmet avslutas innan du hinner se det så kan du lägga till följande rad precis innan "return 0":

cin.get();

Detta funkade i första guiden när jag gjorde ''Hello World''

I variabler guiden gjorde jag det som stog och det funkade utmärkt ( gick att kompilera och köra.)

Sen tänkte jag att jag ville se det som händer i DOS-rutan (den svarta) och la till såhär:


#include<iostream>

using std::cout;

int main()
{
int ett_tal;
ett_tal = 12;

cout << ett_tal;

cin.get();
return 0;
}

Då gick det inte kompilera när jag la till cin.get(); före return 0;

Någon som ser om jag gjort nåt fel?


Senast redigerad 17:31 - 25:e Februari 2008


Nissebosselasse 20:08 - 25:e Februari 2008 | Post #2
Medlem
Inlägg: 490


Skicka PM
cin ligger i namnrymden std (precis som cout), och behöver skrivas med ett fullt kvalificerat namn (d.v.s., både med namnrymden och dess namn) om inte ett s.k. using-direktiv används.
Det har du i koden här ovanför för just cout:
  1. using std::cout;

Detta säger till kompilatorn att när den träffar på cout, så ska den leta i std-namnrymden efter denna. Men cin har inget sådant direktiv, vilket leder till att kompilatorn inte förstår vad du menar.

För att lösa det här kan du göra på två sätt. Antingen använder du det fullt kvalificerade namnet när du ska använda cin:
  1. std::cin.get ();

...eller så lägger du in ett using-direktiv till (precis innan eller efter det första för cout):
  1. using std::cin;


Här kan du läsa mer om namnrymder och using-direktivet i C++:
http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.5

(En del skulle kanske säga att ett tredje alternativ vore att öppna upp hela namnrymden std, genom att lägga in:
  1. using namespace std;

...överst, men det står mer om det i länken jag bifogade.)

-------------------------
http://pushingcows.se
Gula Nallen



RevHead 21:15 - 25:e Februari 2008 | Post #3
Medlem
Inlägg: 2


Skicka PM
Jaså det var felet! Nu funkar det utmärkt tack för hjälpen Smiley




Gnomen 22:20 - 6:e April 2008 | Post #4
Medlem
Inlägg: 2


Skicka PM
Jag har samma problem fast på punkt 05 inmatning. Så här ser min kod ut. Allt förutom just cin.get() kommandot fungerar som det ska.


#include<iostream>

using std::cout;
using std::cin;

int main()
{
int ett_tal;
int ett_tal_till;
int summa;

cout << "Skriv in ett tal\n";
cin >> ett_tal;
cout << "Skriv in ett tal till\n";
cin >> ett_tal_till;

summa = ett_tal + ett_tal_till;

cout << "det blir \n";
cout << summa;

cin.get();
return 0;
}

Som ni ser har jag med using std::cin; och cin.get(); men programmet väntar ändå inte på att jag ska trycka enter. Vad har jag gjort för fel?




Hetzz 11:12 - 7:e April 2008 | Post #5
Medlem
Inlägg: 516


Skicka PM
testa att köra cin.get() två gånger i rad. Eller testa att använda:

cin.ignore(255,'\n');
cin.get();

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





Gnomen 11:28 - 7:e April 2008 | Post #6
Medlem
Inlägg: 2


Skicka PM
testade att köra det två ggr och det funkade, tack för hjälpen




Sidor: 1

Forum huvudsida -> Programmering -> Hjälp
Atom feed

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