我需要一种方法来读取用户在控制台中粘贴的行。用户以这种方式粘贴它:
第一行:n - 除了这一行之外的行数
2nd - nth:一个字符串对象
如果我用 cin 读取它,它会读取第一行,退出程序,然后将下一行放在控制台输入中。使用 scanf 我得到类似的结果。
string s[100];
int N = 0;
scanf("%i", N);
for (int i = 0; i < N; i++)
{
scanf("%s", s);
}
如果您使用 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);
}
getline() 将为您解决问题。尝试这个:
string lines[100];
int number = 0;
cin >> number;
for (int idx = 0; idx != number; ++idx)
{
getline(cin, lines[idx]);
}
请注意,您不能以这种方式阅读超过 100 行。如果要动态分配大小为 n 的行数组,可以使用 new 运算符。