2017-10-16 5 views
0

Supposons que nous ayons la phrase suivante: La dernière fois que j'ai fait un achat il y a __ jours.En code C++, comment puis-je obtenir un nombre entre 2 chaînes de texte

Comment est-ce que je changerais cela en code C++, de sorte que __ est un nombre entier que l'utilisateur entre?

Jusqu'à présent, je suis venu avec ce qui suit, ce qui met la première chaîne, l'entrée entière, et la deuxième chaîne sur des lignes distinctes:

#include <iostream> 
using namespace std; 

int main(){ 
    cout << "The last time I shopped was "; 
    int x; 
    cin >> x; 
    cout << "days ago"; 
} 

Je voudrais obtenir tout cela sur la même ligne - comment je fais ça?

+0

BTW, pour quel système d'exploitation voulez-vous cela? –

+0

S'il vous plaît ** éditez votre question ** pour l'améliorer. –

Répondre

4

Vous ne pouvez pas le faire dans la norme C++11 (ou 14 ou 17 C++ C++), sans bibliothèque spécifique supplémentaire et système.

Vous avez besoin d'une bibliothèque spécifique au système qui gère une ligne modifiable (dans le terminal où vous exécutez votre programme). Standard streams en C++ ne pas que (et C++ standard ne savent même pas terminals, dans de nombreux cas, tels que le commandement pipelines ou redirections, ou coquille scripts en cours d'exécution dans batch ou un emploi cron, vous pourriez pas) .

This answer suggère quelque chose pour Windows (mais il n'est probablement pas robuste car il ne gère pas tous les cas, tels que les programmes fonctionnant en batch ou avec des redirections). Sur les systèmes Linux et POSIX, vous utiliseriez quelque chose en rapport avec tty-s (voir tty demystified et termios(3)). Vous pouvez utiliser isatty(3) pour détecter si vous avez un terminal. Ensuite, vous pouvez utiliser une bibliothèque telle que ncurses ou readline. BTW, ces bibliothèques ont peut-être été portées sur Windows aussi (je vous laisse vérifier cela).

Une autre approche pourrait être d'écrire une application GUI (montrant une fenêtre où certaines parties sont éditables, peut-être sous forme de GUI). Ensuite, vous aurez besoin d'une bibliothèque de toolkit GUI comme Qt. Ou vous pouvez faire de votre programme une application web. Ensuite (en supposant que vous connaissiez certaines technologies web et au minimum comprendre le protocole HTTP et HTML5) utilisez une bibliothèque de serveurs HTTP comme Wt ou libonion (et votre utilisateur utiliserait son navigateur Web pour interagir avec votre application, qui devient un serveur web spécialisé)

PS. Quelle que soit l'approche que vous choisissez, elle est plus complexe que vous ne le pensez et nécessiterait au moins plusieurs jours de travail (d'abord, en lisant la documentation pour se familiariser avec la bibliothèque que vous voulez utiliser).