Avatar billede lesp Nybegynder
08. december 2006 - 15:16 Der er 12 kommentarer og
1 løsning

Lige begyndt

Jeg er lige begyndt på c++ programmering. Jeg lærer det fra en håndbog og burger bloodsheds compiler. Jeg har tastet denne kode i en konsol-applikation:

#include <iostream>



int main()
{
    std::cout <<"Hejsa!\n";
    return 2;
}

Men når jeg "compiler and run"'er så åbner den og lukker den bare filen Rigtigt hurtigt så man ikke kan se noget som helst... Hjælp mig.
Avatar billede simplus Nybegynder
08. december 2006 - 15:20 #1
indsæt system("PAUSE"); lige før return 2;
Avatar billede simplus Nybegynder
08. december 2006 - 15:22 #2
når du nu har fixet det, så kan jeg lige give dig et råd til hvordan du kan slippe for at skrive std:: foran hver cout

#include <iostream>

using namespace std

int main() {
  cout << "Hejsa!"\n";
  return 0;
}

som du ser har jeg rettet 2 til 0 i din return. Forstår ikke helt hvorfor du bruger 2?
Avatar billede lesp Nybegynder
08. december 2006 - 15:57 #3
Det var også en fejl med "2". Men jeg ser at du ikke bruger pause i dit andet eksempel?
Avatar billede simplus Nybegynder
08. december 2006 - 15:58 #4
Nej, det første eksempel var en løsning på din fejl. Det andet eksempel var bare et råd. De har sådan set intet med hinanden at gøre, men hvis du vil have det samlet i en god løsning så værsgod:

#include <iostream>

using namespace std

int main() {
  cout << "Hejsa!"\n";
  system("PAUSE");
  return 0;
}
Avatar billede bertelbrander Novice
08. december 2006 - 21:14 #5
Man kan også bruge:
std::cin.get();
Det har den fordel at det også virker på f.eks. Linux

Hvis du vil bruge system skal du inkludere stdlib.h eller cstdlib

Det er bedre at bruge std::endl end \n til at lave linieskift, f.eks:

std::cout << "Hello World" << std::endl;
Avatar billede simplus Nybegynder
08. december 2006 - 23:01 #6
Ja, nu er jeg ikke helt så meget inde i c++, men jeg kan da en del af det grundlæggende.

bruges cin.get(); ikke oprindeligt når man skal have fat i det brugeren skriver?
det var nu mere et spm, fordi jeg ikke helt kunne huske det, ikke for at sige din kode ikke virker. Det gør den nemlig.

Og ville lige høre hvorfra du har hørt at man skal inkludere stdlib.h eller cstdlib for at få system() til at virke, det virker helt fint her hvis jeg kun inkludere iostream... Kan være mig der har misforstået noget, som sagt: Er ikke helt inde i C++.
Avatar billede bertelbrander Novice
08. december 2006 - 23:28 #7
std::cin.get() henter en char og venter på enter. Den kan således bruges til at læse en char fra brugeren, i dette tilfælde ignorerer vi bare det den læser.

Siden ruder konge har knægt har det stået i C og C++ standarden at system ligger i stdlib.h (/cstdlib). At det ser ud til at virke uden at du inkluderer den er et rent tilfælde. Det er ikke det store problem, compileren skal nok fortælle dig hvis det ikke virker.

I eksempelet fra "08/12-2006 15:58:54" mangler der et ; og der er et " for meget.
Avatar billede simplus Nybegynder
08. december 2006 - 23:42 #8
Aha, på den måde.

Jep, jeg har lige indset at der var små fejl i mit eksempel.. Thanks
Avatar billede lesp Nybegynder
11. december 2006 - 00:25 #9
Men altså det der med system("PAUSE"); kan det ikke give bivirkninger senere hen?
Avatar billede bertelbrander Novice
11. december 2006 - 00:31 #10
Som jeg skrev virker det kun på Windows.
Men det er ret udbredt og let at fjerne igen.
Avatar billede v0id Nybegynder
14. december 2006 - 07:06 #11
Du kan tænke på system()-funktionen som kommandoprompten eller batch-programmering.
Alle de kommandoer der virker i kommandopromptem virker også for system()-kommandoen. Lidt overfladisk kan man vel sige at den bare "sender" det hele til kommandoprompten, eller systemet.

C:\>PAUSE
system("PAUSE");

Der er dog enkelte ting man skal tage højde for med system()-funktionen, hvis man f.eks. arbejder med filer, stier, mapper, eller lignende, kan det godt volde problemer med '\', o.l.

Og som Bertel også sagde, så virker system("PAUSE") ikke i f.eks. linux, da linux ikke har det samme system som windows.
Avatar billede datux Nybegynder
04. februar 2007 - 18:15 #12
Jeg ville oss klart anbefale dig at bruge cin.get(), siden den er inkluderet i stdio. Det ville jo være noget pjat at skulle inkludere en header yderligere når der slet ikke er brug for det. Tjek http://www.gidnetwork.com/b-61.html for ulemper ved at benytte system("PAUSE"). Og det med at den ikke virker i linux, er jo ikke det store problem. Jeg vil vædde med at man altid har et eller andet der ikke virker i linux, når man laver noget i windows (medmindre det er optimeret specielt til at kunne porte til linux).
Men måske bare skrive:
cout << "Tryk på en tast for at fortsætte" << endl;
cin.get();
return 0;

Håber det hjalp lidt - selvom alle andre har skrevet næsten det samme :D
Avatar billede lesp Nybegynder
22. juni 2007 - 21:53 #13
Lukker
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