NewProject Δημοσ. 7 Μαρτίου 2010 Δημοσ. 7 Μαρτίου 2010 μπορειτε να μου πειτε αν υπαρχει περιπτωση ενα προγραμα να περιμενει ο χρηστης να εισαγει ενα 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; }
Lucky Luke Δημοσ. 7 Μαρτίου 2010 Δημοσ. 7 Μαρτίου 2010 Κάνε χρήση της usleep(int microseconds). Πρέπει να κάνει include και το unistd.h. Π.χ. για αναμονή 100ms δίνεις: >usleep(100000);
NewProject Δημοσ. 7 Μαρτίου 2010 Μέλος Δημοσ. 7 Μαρτίου 2010 δηλαδη : > std::string Input(unsigned long int ms){ std::string str = ""; usleep(ms*1000); std::cin >> str; return str; } ? αλλα αυτο δεν λειτουργει ...
parsifal Δημοσ. 7 Μαρτίου 2010 Δημοσ. 7 Μαρτίου 2010 Το παρακάτω link νομίζω πως θα σε βοηθήσει: http://www.cplusplus.com/forum/general/5304/
Lucky Luke Δημοσ. 7 Μαρτίου 2010 Δημοσ. 7 Μαρτίου 2010 Έχεις δίκιο, δεν είχα καταλάβει καλά την απορία σου στο πρώτο post. Δυστυχώς δεν ξέρω πώς να το λύσεις και απ' ό,τι έψαξα λίγο τώρα δεν είναι κάτι το τετριμμένο για να γίνει. Πάντως αν θες να το ψάξεις κι εσύ, αν δε γνωρίζει κανείς άλλος, έχει να κάνει με non blocking IO και πιο συγκεκριμένα με non blocking stdin (ή standard input). [Προσθήκη] Άργησα κάπως να απαντήσω. Ελπίζω να βγάλεις άκρη με το παραπάνω link.
NewProject Δημοσ. 7 Μαρτίου 2010 Μέλος Δημοσ. 7 Μαρτίου 2010 το βρηκα τελικα ... > 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 ... αλλα αυτο δεν ειναι και μεγαλο προβλημα .. Ευχαριστω!
virxen75 Δημοσ. 7 Μαρτίου 2010 Δημοσ. 7 Μαρτίου 2010 το βρηκα τελικα ... > 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.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.