提问人:user22643044 提问时间:9/27/2023 最后编辑:Abrauser22643044 更新时间:9/29/2023 访问量:80
如何编写 C++ 代码,该代码接受 n 个字符串并将它们存储在字符串向量中,然后打印它 [重复]
How to write C++ code that takes n strings and stores them inside a vector of strings and later prints it [duplicate]
问:
如何编写接受n个字符串(之间可以有空格)的C++代码并将它们存储在字符串向量中,然后打印它? (将字符串放在向量中是必要的。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
vector<string> v;
for (int i = 0; i < n; i++)
{
string s;
getline(cin, s);
v.push_back(s);
}
for (int i = 0; i < n; i++)
{
cout << v[i] << endl;
}
}
这是我的代码。它只取字符串而不是取字符串。然后打印一个新行,然后打印字符串。n - 1
n
n - 1
答:
4赞
Jakob Guldberg Aaes
9/27/2023
#1
解释
我看到您遇到的问题。它与 和 之间的交互有关。使用 to read 后,它会捕获数字,但不会从输入缓冲区中删除换行符。这会导致后续读取空字符串。要绕过此问题,最好在读取后立即清除输入缓冲区。cin
getline
cin
n
getline
n
法典
#include <iostream>
#include <vector>
#include <string>
#include <limits>
int main()
{
int n;
std::cin >> n;
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Clearing the input buffer
std::vector<std::string> v;
for (int i = 0; i < n; i++)
{
std::string s;
std::getline(std::cin, s);
v.push_back(s);
}
for (int i = 0; i < n; i++)
{
std::cout << v[i] << '\n';
}
}
这应该可以解决问题。
评论
1赞
Jakob Guldberg Aaes
9/28/2023
随意编辑答案^____^
1赞
JW Yap
9/27/2023
#2
解释
如果您在 之后立即调用,您将只得到一个换行符。
为避免此问题,您需要先使用换行符。
您可以通过在 for 循环之前添加它来做到这一点。getline()
cin >> n;
法典
cin.ignore();
评论
#include <bits/stdc++.h>
using namespace std;