如何使用户输入多行
How To Make User Input Multiple Lines
我想让用户能够输入多行字符串。我一直在尝试使用 for 循环,但到目前为止只返回最后一行。
例如,用户输入以下字符串和行。string str;
getline(cin, str);
或循环for(i=0;i<n;i++){
getline(cin, str);}
这些是用户输入的输入
篮球 棒球 足球//1号线
曲棍球足球拳击"//第 2 行
现在,我希望能够在某一点返回这两行。我不知道该怎么做。 另外,我发现更困难的是试图弄清楚用户是否只输入一行,两行或三行。我了解如何用cases
点帽子,但如果有一种更简单的方法看起来不那么混乱,我现在想,
为什么不在 while 循环中使用std::getline
,这样一旦进入空行,循环就会退出,如下所示:
#include <iostream>
#include <string>
#include <vector>
int main() {
std::string line;
std::vector<std::string> lines;
while (getline(std::cin, line) && !line.empty()) {
lines.push_back(line);
}
std::cout << "User has entered " << lines.size() << " lines" << std::endl;
for (auto const& l : lines) {
std::cout << l << std::endl;
}
std::cout << "... End of program ..." << std::endl;
return 0;
}
您可以将用户输入到std::vector
容器中的每行存储起来,并在以后再次检索这些行。
可能的输出:
First line
Second line
User has entered 2 lines
First line
Second line
... End of program ...
更新
如果你想让用户只输入 2 行,如果你想使用 for 循环,那么你可以这样做:
#include <iostream>
#include <string>
#include <vector>
int main() {
std::string line;
std::vector<std::string> lines;
for (int i = 0; i < 2; i++) {
std::getline(std::cin, line);
lines.push_back(line);
}
std::cout << "User has entered " << lines.size() << " lines" << std::endl;
for (auto const& l : lines) {
std::cout << l << std::endl;
}
std::cout << "... End of program ..." << std::endl;
return 0;
}
输出可以是:
First line
Second line
User has entered 2 lines
First line
Second line
... End of program ...
相关文章:
- C++如何通过用户输入删除列表元素
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 用户定义函数中的指针和输入
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 在C++中,我如何接受不同于同一行的用户输入
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 当用户键入分隔符时,停止getline()输入
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 当用户在qtablewidget中输入单元格时,如何获得信号?C++
- 显示基于用户输入的整数的字符
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 如果用户没有输入任何内容或输入错误,如何重新输入用户的输入?
- 为什么在代码块中执行时会跳过输入用户输入的行?
- 使用 for 循环在数组中输入用户