Προς το περιεχόμενο

C++ Input Delay


NewProject

Προτεινόμενες αναρτήσεις

Δημοσ.

μπορειτε να μου πειτε αν υπαρχει περιπτωση ενα προγραμα να περιμενει ο χρηστης να εισαγει ενα string για συγκεκριμενο χρονικο διαστημα ( ms )?

 

Παραδειγμα :

 

>
#include <iostream>

std::string Input(unsigned long int){
  // code ?
  return "";
  }

int main(){
  std::string line = "";

  std::cout<<"enter a text fast ! : ";
  line = Input(1000);
  
  if( line=="" ){
      return 0;
      }
  else{
     std::cout<<"...nice job...\n";
     }
  return 0;
  }

Δημοσ.

Έχεις δίκιο, δεν είχα καταλάβει καλά την απορία σου στο πρώτο post. Δυστυχώς δεν ξέρω πώς να το λύσεις και απ' ό,τι έψαξα λίγο τώρα δεν είναι κάτι το τετριμμένο για να γίνει.

Πάντως αν θες να το ψάξεις κι εσύ, αν δε γνωρίζει κανείς άλλος, έχει να κάνει με non blocking IO και πιο συγκεκριμένα με non blocking stdin (ή standard input).

 

[Προσθήκη]

Άργησα κάπως να απαντήσω. :-)

Ελπίζω να βγάλεις άκρη με το παραπάνω link.

Δημοσ.

το βρηκα τελικα :) ...

 

>
std::string Input(unsigned int loops){
  unsigned int i = 0;
  std::string str;

  while( i<=loops){
      if( kbhit() ){
         cin>>str;
         break;
         }
      i++;
      }
  return str;
  }

 

 

 

p.s. μονο που εδω πρεπει να βαλω loops και οχι ms , δηλαδη στο δικο μου μηχανημα τα 10,000 loops τα κανει σε ~200ms ... αλλα αυτο δεν ειναι και μεγαλο προβλημα ..

 

Ευχαριστω!

Δημοσ.
το βρηκα τελικα :) ...

 

>
std::string Input(unsigned int loops){
  unsigned int i = 0;
  std::string str;

  while( i<=loops){
      if( kbhit() ){
         cin>>str;
         break;
         }
      i++;
      }
  return str;
  }

 

 

 

p.s. μονο που εδω πρεπει να βαλω loops και οχι ms , δηλαδη στο δικο μου μηχανημα τα 10,000 loops τα κανει σε ~200ms ... αλλα αυτο δεν ειναι και μεγαλο προβλημα ..

 

Ευχαριστω!

 

για να έχεις ms πάρε την ώρα συστήματος σε ms-->μεταβλητή start

μεταβλητή end=start+10000ms χρόνος τερματισμού.

και στο while

συγκρίνεις την τρέχουσα ώρα σε ms με τον χρόνο τερματισμού end.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...