getline如何使用getline将一个字符串输出n次?

How do I use getline to output a string n times using getline?

我想将此代码与 getline 函数一起使用来输出一个字符串 n 次,但它只输出空行而不是一些字符串。为什么会这样,我该如何解决?

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

int main()
{
    int n;
    cin >> n;
    string str;
    getline(cin, str);
    for (int i = 0; i < n; i++) {
        cout << str <<endl;
    }
    return 0;
}

当你输入一个数字给n赋值时,你是否在换行后输入字符串?如果是,则为 str 分配一个换行符而不是相应的字符串。

#include <iostream>
#include <string>
using namespace std;
        
int main()
{
int n;
cin >> n;
string str;
// getline(cin, str);//Filter newline character
// getline(cin, str);
getline(cin.ignore(1,'\n'), str);
for (int i = 0; i < n; i++) {
cout << str <<endl;
}
return 0;
} 

您可能希望在输入数字后输入第一个 non-whitespace 文本。您可以使用 std::ws

跳过前导空格
#include <iostream>
#include <string>

int main()
{
    int n;
    std::cin >> n;
    std::string str;
    std::getline(std::cin >> std::ws, str);
    for (int i = 0; i < n; i++) {
        std::cout << str << std::endl;
    }
    return 0;
}