Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Loopin lopettaminen syöttellä

Hennkka [20.07.2011 21:38:57]

#

Kuinka voi lopettaa loopin käyttäjän syötteestä ilman, että ohjelma pysähtyy lukemiseen? Ohjelmani laskee MD5-arvoja ja olisi kiva, jos ohjelman voisi pysäyttää tarvittaessa.

Itse ajattelin, että ensin tarkistetaan, onko käyttäjä syöttänyt jotain bufferiin ja siitä riippuen luetaan arvo. Onko tämä mahdollista?

Toistaiseksi käytän Ubuntua, mutta toivottavasti saan C++-kääntäjän toimimaan Windowsissakin, joten pitäisi toimia molemmissa :)

ps. C++:han ei oletuksena tue säikeitä, joten kuinka ne toteutetaan helpoiten? Niillähän saisi kaikki ytimet käyttöön, jotta laskenta nopeutuu?

Pekka Karjalainen [21.07.2011 08:53:44]

#

Vastaus ps-kohtaan: C++:n uusi standardi sisältää säieominaisuuksia, mutta sitä eivät nykyiset kääntäjät taida vielä tukea tarpeeksi hyvin. Boostin thread-kirjasto on yksi vaihtoehto. Jos se ei ihan standardin osa olekaan, ainakin se noudattaa useita standardikomitean suosituksia.

http://www.boost.org/doc/libs/1_47_0/doc/html/thread.html

lainaus:

The Boost.Thread library was originally written and designed by William E. Kempf. This version is a major rewrite designed to closely follow the proposals presented to the C++ Standards Committee, in particular N2497, N2320, N2184, N2139, and N2094

neau33 [08.08.2011 04:02:42]

#

Moi Hennkka!

try this...

#include <conio.h>
#include <iostream>

using namespace std;

int main()
{

   int value = 0;

   while(value < 1000000)
   {
      if(kbhit())
      {
         break;
      }

      ++value;
   }

   cout << value << endl;
   return 0;

}

Torgo [09.08.2011 10:05:39]

#

Conio.h taitaa olla Microsoftin viritelmiä, joten vaatimus sekä Windowsissa että Linuxissa toimimisesta ei taida täyttyä Nean koodissa. Ratkaisu on käyttää jotain portattavaa alustaa, joka tarjoaa tuon toiminnallisuuden, kuten Ncurses. Tai esim. Pekan mainitsema Boost tai täälläkin pelintekoon suositut SDL ja SFML (jotka tosin taitavat olla tarkoitukseesi vähän overkilliä).

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta