【问题标题】:c++ get multiple linesc++ 获取多行
【发布时间】:2013-11-09 19:05:17
【问题描述】:

我需要一种方法来读取用户在控制台中粘贴的行。用户以这种方式粘贴它:

第一行:n - 除了这一行之外的行数

2nd - nth: 一个字符串对象

如果我用 cin 读取它,它会读取第一行,退出程序,然后将下一行放在控制台输入中。使用 scanf 我得到了类似的结果。

string s[100];

int N = 0;
scanf("%i", N);

for (int i = 0; i < N; i++)
{
scanf("%s", s);
}

【问题讨论】:

  • 请出示您的代码。
  • C++ 流(cincout)更适合用于读取字符串
  • 甚至使用std::getline函数
  • 发送 地址scanf 函数 - scanf("%i", &amp;N) 而不是 scanf("%i", N)

标签: c++ input console


【解决方案1】:

如果您使用std::vector&lt;std::string&gt; 并使用std::getline 提取行会更好:

std::vector<std::string> lines;
std::string line;

while (std::getline(std::cin >> std::ws, line))
{
    if (!line.empty())
        lines.push_back(line);
}

【讨论】:

    【解决方案2】:

    getline() 将为您解决问题。试试这个:

    string lines[100];
    
    int number = 0;
    cin >> number;
    
    for (int idx = 0; idx != number; ++idx)
    {
        getline(cin, lines[idx]);
    }
    

    请注意,您不能以这种方式阅读超过 100 行。如果要动态分配大小为 n 的行数组,可以使用 new 运算符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-02
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多