• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

samozamykająca się konsola

Object Storage Arubacloud
0 głosów
252 wizyt
pytanie zadane 19 sierpnia 2017 w C i C++ przez Kijoszi Początkujący (330 p.)

Hej! Zacząłem naukę C++ w Visual Studio i napisałem program z cukierkami od Zelenta. Wlączyłem i konsola po zakończeniu kodu sama się zamyka. W pewnym stopniu sobie poradzilem z tym dając

system("pause");

, lecz chciałbym wiedziec czy da się, by konsola nie znikała bez tej komendy jakoś inaczej?

2 odpowiedzi

+2 głosów
odpowiedź 19 sierpnia 2017 przez niezalogowany
Prawym na projekt -> właściwości -> konsolidator -> system
Następnie ustaw wszystkie konfiguracje i w polu podsystem wybierz CONSOLE. Kliknij OK. Następnie uruchom bez debugowania (ctrl + F5).
+1 głos
odpowiedź 19 sierpnia 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Nie używaj system("pause")! Staraj się w ogóle używanie std::system() ograniczać do minimum, gdyż psujesz przenośność swojego programu.

Lepiej użyć takiego kodu:

std::cin.get();

Jeśli nie chcesz by konsola samoczynnie Ci się zamykała po wykonaniu programu, możesz uruchamiać program z poziomu konsoli.

komentarz 19 sierpnia 2017 przez Kijoszi Początkujący (330 p.)

a jeszcze jedno pytanie.. jak zrobić, by cout'y zaczynały się od nowych linijek w konsoli? Jak dałem 

cout << "Witaj w naszym banku!"; 
cout << "Podaj numer PIN:";

to w jednej linijce mi zrobiło w konsoli.

komentarz 19 sierpnia 2017 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
cout<<"Jakis tekst"<<endl;
cout<<"Inny tekst w nowej lini";

//lub

cout<<"Jakis tekst\n";   //dopisane \n
cout<<"inny tekst";

 

komentarz 19 sierpnia 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Odradzam używanie std::endl, jeśli nie ma takiej potrzeby. https://gist.github.com/qwercik/dce078fcf69babbc20bc76243416389b

Wyniki tego testu na moim komputerze:

Test \n
1603 ms
Test std::endl
26871 ms

Oczywiście, rzadko zdarza się zapisywać do pliku lub wyświetlać na ekran 9999999 linii, no ale różnicę pomiędzy nimi widać. laugh

komentarz 19 sierpnia 2017 przez QizmoPL Stary wyjadacz (11,440 p.)
Test \n 346 ms

Test std::endl 387 ms

roznica u mnie, prawie zadna, ale jednak
komentarz 19 sierpnia 2017 przez niezalogowany
przywrócone 30 sierpnia 2017

Zastanowiło mnie czy obecność pełnego pliku spowalnia. Zauważyłem u siebie pewną nieścisłość. Kod:

#include <iostream>
#include <fstream>
#include <vector>
#include <chrono>
#include <string>
#include <filesystem>

typedef void(*void_func_ptr_t)(void);
const int COUNT = 99999; // tag mam słaby komputer

struct Test
{
	std::string name;
	void_func_ptr_t function;
};

void withNewLine()
{
	std::ofstream file("output_endl.txt");

	for (int i = 0; i < COUNT; ++i)
		file << "Message " << i + 1 << "\n";
}

void withEndl()
{
	std::ofstream file("output_endl.txt");

	for (int i = 0; i < COUNT; ++i)
		file << "Message " << i + 1 << std::endl;
}

void withFlushEndl()
{
	std::ofstream file("output_endl.txt");

	for (int i = 0; i < COUNT; ++i)
		file << "Message " << i + 1 << std::endl;
}


int main()
{
	std::vector<Test> tests
	{ 
		{"\\n", withNewLine},
		{"std::endl", withEndl}
	};

	constexpr int ile = 10;
	
	for (auto test : tests)
	{
		std::cout << "Test " << test.name << " - noremove \n";
		for (int i = 0; i < ile; i++)
		{
			auto startTime = std::chrono::high_resolution_clock::now();
			test.function();
			auto endTime = std::chrono::high_resolution_clock::now();

			std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime).count() << " ms\n";
		}

		std::experimental::filesystem::remove("output_endl.txt"); // zeby na pewno

		std::cout << "Test " << test.name << " - remove \n";
		for (int i = 0; i < ile; i++)
		{
			auto startTime = std::chrono::high_resolution_clock::now();
			test.function();
			auto endTime = std::chrono::high_resolution_clock::now();

			std::experimental::filesystem::remove("output_endl.txt");

			std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime).count() << " ms\n";
		}
	}
}

Wyjście:
 

Test \n - noremove
683 ms
686 ms
686 ms
667 ms
686 ms
675 ms
669 ms
683 ms
675 ms
669 ms
Test \n - remove
752 ms
679 ms
670 ms
716 ms
702 ms
666 ms
714 ms
826 ms
672 ms
738 ms
Test std::endl - noremove
1577 ms
2017 ms
2014 ms
2019 ms
2005 ms
2007 ms
2008 ms
2018 ms
2021 ms
2021 ms
Test std::endl - remove
1603 ms
1578 ms
1585 ms
1595 ms
1590 ms
1579 ms
1594 ms
1585 ms
1590 ms
1589 ms
Aby kontynuować, naciśnij dowolny klawisz . . .


W przypadku "\n" nie widać jakiejś znaczącej różnicy, ale zastanawia mnie wyniki dla std::endl. Czy to kolejna wada std::endl? Mógłby ktoś mądrzejszy rozwiać wątpliwości? ;)

komentarz 20 sierpnia 2017 przez jpacanowski VIP (101,940 p.)
std::cin.get();

Bleeee.... Albo możesz też:

getchar();

Podobne pytania

0 głosów
1 odpowiedź 253 wizyt
pytanie zadane 2 marca 2020 w Systemy operacyjne, programy przez kolijk Użytkownik (600 p.)
+1 głos
1 odpowiedź 90 wizyt
pytanie zadane 1 stycznia 2018 w C# przez niezalogowany
0 głosów
1 odpowiedź 118 wizyt
pytanie zadane 27 sierpnia 2023 w C i C++ przez Code_ Użytkownik (520 p.)

92,550 zapytań

141,394 odpowiedzi

319,522 komentarzy

61,935 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...