在c++中接受多个输入
Taking Multiple inputs in C++
我刚开始学习c++,有一个菜鸟问题。
假设我得到一个由空格分隔的输入,例如2 4 56
或2 1 10 15
或hi bye ok
。当输入的长度不知道时,我如何将值存储在数组中。
阅读std::vector
。
搜索空格并将每个空格中的字符串分割为如下
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> GetInputs(string s)
{
vector<size_t> foundSpacesPositions;
vector<string> results;
for (size_t i = 0; i < s.length(); i++)
{
if (isspace(s[i]))
{
foundSpacesPositions.push_back(i);
}
}
size_t start = 0;
for (size_t i = 0; i < foundSpacesPositions.size(); i++)
{
if (foundSpacesPositions[i] == start)
{
++start;
continue;
}
results.push_back(s.substr(start, foundSpacesPositions[i] - start));
start = foundSpacesPositions[i] + 1;
}
if (start < s.length() - 1)
results.push_back(s.substr(start, s.length() - 1));
return results;
}
int _tmain(int argc, _TCHAR* argv[])
{
string s = "a dd 8 ll ehh fd $%^ & 89 . ";
vector<string> results = GetInputs(s);
for (auto& res : results)
{
cout << res << endl;
}
cin.get();
return 0;
}
/* OUTPUT
a
dd
8
ll
ehh
fd
$%^
&
89
.
*/
如果输入是字符串,您可以轻松地使用std::istringstream
。如果输入是在stdin中给出的,则可以只使用std::cin
流。std::istream
的operator<<
将使用空格作为默认分隔符从字符串中获取整数。一旦您读取了流上的所有输入,std::istream
的operator bool
将返回false,您可以停止读取。
一个示例实现是:
vector<int> getIntsFromString(const string& s) {
istringstream ss(s);
int i;
vector<int> result;
while (ss >> i) result.push_back(i);
return move(result);
}
假设您从stdin中获得多行数量可变的整数,并且您希望将它们存储在vector<int>
中。您可以做类似的事情:
string buf;
while (getline(cin, buf)) {
auto v = getIntsFromString(buf);
for (auto i : v) cout << i << ' ';
cout << endl;
}
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 用户定义函数中的指针和输入
- 如何在C++中检查2D数组中负值的输入验证
- 如何只允许用户输入正整数
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 输入中的字符串数未知(以字母表示)
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 在一个模板函数中,若输入的类型是enum类,我该如何使用std::underlying_type