要求用户输入文字行。

时间:2016-02-15 20:46:59

标签: c++

让我们说在我的(控制台)程序中,我要求用户输入他们的传记。 (或任何类型的文本导致几行)。

这将是我的代码:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string bio;
    cout << "Please Enter Your Bio\n";
    cin >> bio;
}

问题:

  1. 我不知道字符串是否可以容纳那么多文本。

  2. 我知道cin会在用户输入单词之间的“空格”后停止输入,那么整个输入存储的选项是什么?我读过getline可以用,但我不知道怎么做。

  3. 如果用户想要开始另一个段落,那么当用户点击“输入”时,就会将其视为已完成写入并且代码将继续进行。 因此,用户无法编写实际的传记。

2 个答案:

答案 0 :(得分:2)

如果没有编写或链接到文本编辑器,这将不是一个非常好的程序。例如,如果用户在已输入的行上出错,则无法返回并编辑它。

然而,只是为了接受这个想法,这种事情在某些情况下完成(例如unix程序mail),并且通常期望现有输入将被管道化进入程序而不是与用户交互。

您不必担心字符串足够大。它可以容纳很多。您只需要决定是使用某个分隔符来结束输入,还是结束流。两者都有效。

  • 选项1:仅在流末尾终止输入:

    std::string bio, line;
    while( std::getline( std::cin, line ) ) bio += line;
    
  • 选项2:在流的末尾或分隔符上终止输入(在这种情况下,在一行上单个句点.,但它可以是任何东西,包括空字符串以在第一行停止输入空行):

    std::string bio, line;
    while( std::getline( std::cin, line ) && line != "." ) bio += line;
    

答案 1 :(得分:-1)

将getline与输入流(cin)和字符串对象(bio)

一起使用
geline(cin, bio);

您可以通过它的max_size()方法获得字符串对象的最大可能大小。

你可以指定&#34;结束&#34; getline函数的字符,例如,你可以使用&#34;文件的结尾&#34;字符&#39; \ 0&#39;

getline(cin, bio, '\0');

用户可以写多行文字,然后按CTRL + D结束输入

相关问题