Permalänk
Medlem

Pausa C++

Håller på att läsa lite guider för att lära mig grunderna i C++ och har stött på ett litet problem. När man gör ett enkelt hello world porgram så här:

// Ett s.k. Hello World-program.
#include <iostream>
int main()
{
std::cout << "Hejsan världen" << std::endl;
return 0;
}

Så blinkar bara fönstret till och försvinner såvida man inte öppnar det från en dosprompt. Till det har jag hittat lösningen
system("pause") Och får då alltså föjande kod:

#include <iostream>
int main()
{
std::cout << "Hejsan världen" << std::endl;
system("pause")
return 0;
}

Men när man kommer till pausen så står det "Tryck valfri tangent för att avsluta" Det jag vill är att det ska bli en pause i programet utan att det kommer upp någon text om det. Hur löser man detta på smidagste möjliga sätt?

Visa signatur

Denta

Permalänk
Hedersmedlem

#include <iostream> #include <conio.h> int main() { std::cout << "Tjosan och hejsan!" << std::endl; getch(); return 0; }

Är ett sätt, dock har jag hört att man inte ska använda getch. Hittade något annat förut men har glömt bort det =/

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem

jag har löst det genom

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

int main(void)
{
string buffer
cout << "Hejsan världen" << endl;
getline(cin, buffer);
return 0;
}

Lite fulkod kanske, men då väntar det på en text att läggas in i buffer.

getch() är väl borland specifikt? precis som do{}while(!kbhit());

Visa signatur

Light travels faster than sound. Is that why some people appear to be smart before they speak?
It's a big rock. I can't wait to tell my friends. They don't have a rock this big.

Permalänk
Medlem

Ett sätt är att starta en kommandopromt och sedan starta dina program från den, då stängs inte programmet när det har kört klart.

/Viktor

Permalänk
Medlem

Tack för svaren!

Citat:

Ursprungligen inskrivet av vg132
Ett sätt är att starta en kommandopromt och sedan starta dina program från den, då stängs inte programmet när det har kört klart.

/Viktor

Som sagt så vet jag det, men jag vill att det ska vara lätt att använda programet.

Visa signatur

Denta

Permalänk

getch(); funkar i MSVS

Visa signatur
Permalänk
Hedersmedlem

Ah, det var det sättet som kerberos skrev som jag tänkte på

EDIT: getch(); fungerar i GCC iaf
EDIT2: Sen har jag sett
cin.get(); eller
std::cin.get();

Men det har jag för mig att jag inte fått att fungera i GCC...

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem

getchar(); är väl mer iso?

Visa signatur

K#

Permalänk
Medlem

Annars kan man skriva system("pause > nul"); Då blir det pausat utan någon extra text

Visa signatur

Vill du ha svar? Citera mig gärna.

Permalänk
Hedersmedlem

system("pause"); fungerar endast i Windows, tänk på det...
atman: det har jag provat men det fungerar inte i GCC iaf.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem

Getline skulle jag vilja påstå att det går under fulkod så det stänker om de, men det funkar ;). Skulle nog använda system("pause") om du sitter på win, annars bör det väl finnas andra kommandon du kan anropa via system("foo") om du sitter i linux / liknande os.

Visa signatur

Övriga Ämnen - Enbart för människor som är seriösa!

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av lajnold
Annars kan man skriva system("pause > nul"); Då blir det pausat utan någon extra text

"pause > nul" Är inte det ett valigt doskommando? Kan man alltså köra doskommandon genom system(kommando)?

Visa signatur

Denta

Permalänk
Testpilot
Citat:

Ursprungligen inskrivet av Denta
"pause > nul" Är inte det ett valigt doskommando? Kan man alltså köra doskommandon genom system(kommando)?

Det är precis det man gör med system, skriver du dir så får du upp alla filer i mappen.

Visa signatur

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 16GB][Asus GeForce RTX 2060 Super Dual Evo OC]

Permalänk
Medlem

Men att i ett c++ program anävnda doskommandon för att pausa känns inte helt 100, finns det ingen bättre lösning?

Visa signatur

Denta

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av m0REc

#include <iostream> #include <conio.h> int main() { std::cout << "Tjosan och hejsan!" << std::endl; getch(); return 0; }

Vad är det för fel med getch()? Det går väl att använda?

Edit: Fungerar iaf i Dev-C++

Visa signatur

..:: RiJo ::..
Computer: Lenovo X300
Platform: Gentoo

Permalänk
Hedersmedlem

RiJo: Ja, det går att använda men jag läste någonstans där man blev avrådd att använda det... Ska se om jag hittar...

EDIT: http://cplusplus.nu/faq.asp?what=view&id=24

Kommer tydligen från Borland, men det verkar fungera på de flesta vanliga kompilatorerna...

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem

Saxat "Det är också därför den inte fungerar i exempelvis Dev C++.".

Det fungerar i min version av Dev-C++ iaf

Visa signatur

..:: RiJo ::..
Computer: Lenovo X300
Platform: Gentoo

Permalänk
Hedersmedlem

RiJo: Jag har också nämt att det fungerar i Dev-C++, eller iaf så sa jag GCC som Dev-C++'s kompilator Mingw32 är en port av...

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem

Du kan inte använda cin >> da?
Det kan det väl iaf inte vara nåt fel på.
Annars finns ju sleep() om du vill pausa programmet under en viss tidsperiod.

Visa signatur

Flest prylar när man dör vinner

Permalänk
Medlem

du kan ju börja med att skriva:

#include <iostream> using namespace std; int main() { cout <<"Hejsan världen!" << endl; cin.get(); cin.get(); return 0; }

att köra med 2 cin.get är inte nödvändigt men ibland måste man för att den ska funka...

EDIT: korrekturläs koden barn ;/

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av m0REc
system("pause"); fungerar endast i Windows, tänk på det...
atman: det har jag provat men det fungerar inte i GCC iaf.

Fungerar utmärkt, dock kräver det stdlib.h

Visa signatur

"A good discussion is like a miniskirt; Short enough to pertain interest and long enough to cover the subject"
何回やっても何回やってもエロゲが終わらない

Permalänk
Medlem

En fråga till:

Hur gör man så att det blir en paus tills man trycker "i"?

Visa signatur

Denta

Permalänk
Medlem

char blah; while (blah != 'i') { cin >> blah; }

Något i den stilen?

Permalänk
Medlem

släng in cin.ignore(1) innan returneringen, brukar funka för mig.

alltså:

#include <iostream>

int main()
{

std::cout << "Hejsan världen" << std::endl;

cin.ignore(1);
return 0;
}

lite fult kanske men det funkar i ur och skur

[edit]
kan dock inte garantera att det funkar utanför windows...

Visa signatur

Opteron 165 CCBWE 0550XPMW | MSI Neo2 platinum 54G | 2x512mb Geil One S 1,5-2-2-5 @ 400mhz | Gainward GF 6800 GT | WD 100gb + Maxtor 200gb + Maxtor 250gb

Permalänk
Hedersmedlem

Vizay:
std::cin.ignore(1);

i så fall...

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem

just ja, tack för rättningen morec

jag brukar slänga in "using namespace std;" i min kod för att slippa skriva "std::" om och om igen så jag glömde den lilla detaljen

Visa signatur

Opteron 165 CCBWE 0550XPMW | MSI Neo2 platinum 54G | 2x512mb Geil One S 1,5-2-2-5 @ 400mhz | Gainward GF 6800 GT | WD 100gb + Maxtor 200gb + Maxtor 250gb

Permalänk
Medlem

ok, tack!

Visa signatur

Denta

Permalänk
Medlem

ok, tack!

Visa signatur

Denta