2017-10-16 97 views
0

2之间的数字。假设我们有下面的句子: 我最后一次逛过是__天前。在C++代码,如何获取用户输入字符串中的文本

我将如何改变这种成C++代码,从而__是一个整数,所述用户输入?

到目前为止,我想出了以下内容,这使第一个字符串,整数输入,并在单独的行第二个字符串:

#include <iostream> 
using namespace std; 

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

我想获得这一切到同一条线 - 我该怎么做?

+0

顺便说一句,你需要哪种操作系统? –

+0

请**编辑您的问题**以改善它。 –

回答

4

可以这样做,在标准C++11(或C++ 14或C++ 17),而没有任何附加的和系统特定的库。

您需要系统专用库来处理可编辑的行(在运行程序的终端中)。 Standard streams在C++中没有这样的(和标准C++甚至不知道terminals;在许多情况下,如命令pipelines,或redirections,或外壳scriptsbatch或作为cron工作运行时,你可能没有任何) 。

This answer提出一些针对Windows(但它可能是不稳健的,因为它不能处理所有的情况下,如在批处理运行的程序或重定向)。

在Linux和POSIX系统上,您可能会使用与tty-s相关的内容(请参阅tty demystifiedtermios(3))。您可以使用isatty(3)来检测您是否有终端。然后你可以使用库如ncursesreadline。顺便说一句,这些库也可能已经移植到Windows(我留给你检查)。

的另一种方法可能是写一些GUI应用(示出一个窗口,其中某些部分是可编辑的,也许作为GUI的形式)。然后,您需要一个GUI工具箱库,如Qt

或者你可以让你的程序成为一个web应用程序。然后(假设你知道一些网络技术和起码了解HTTP协议和HTML5)使用一些HTTP服务器库像Wtlibonion(和您的用户将使用其Web浏览器与您的应用程序,这成为一些专门的Web服务器进行交互)

PS。无论您选择什么方法,它都比您想象的要复杂得多,并且需要至少几天的工作时间(首先,阅读文档以熟悉您要使用的库)。

相关问题