C++ 获取多行

c++ get multiple lines

本文关键字:获取 C++      更新时间:2023-10-16

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

第一行:n - 除此行外的行数

2 个 - 第 n 个:字符串对象

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

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

如果您使用std::vector<std::string>并使用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);
}

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

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

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