1

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

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

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

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

string s[100];

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

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

2 回答 2

3

如果您使用 astd::vector<std::string>和 usestd::getline来提取行会更好:

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

while (std::getline(std::cin >> std::ws, line))
{
    if (!line.empty())
        lines.push_back(line);
}
于 2013-11-09T19:25:45.480 回答
0

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

string lines[100];

int number = 0;
cin >> number;

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

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

于 2013-11-09T19:24:06.550 回答