来自 2 个不同向量的输入,用逗号分隔
input from 2 different vectors seperated by a comma
我正在做一个项目,要求我们以逗号分隔的对的形式获取输入,例如 2,16 16,134 15,631 这些对将被保存到 2 个向量中(1 个用于左边的数字,1 个用于每对右侧的数字)任何人都知道如何开始吗?
不要让这变得比必须的更难。您知道每对都将是XYZ,XYZ
的形式,并且对之间会有空格。
流提取运算符 (>>
) 在读取int
变量时,将读取它可以读取的所有整数字符(忽略前导空格),直到它命中非整数字符。我们可以用它来大大简化事情。
事实上,成对阅读的整个循环必须是:
int p1, p2;
char comma;
while(std::cin >> p1 >> comma >> p2) {
//...
}
(请注意,我在这里使用std::cin
。这可以很容易地换成文件流,或者 - 如果你有一个直字符串 - 字符串流)。
在这里看到它的实际效果:ideone
您可以在空格上拆分字符串,创建一个字符串数组。你会有类似{"2,16", "16,134", ...}
.
然后,您可以在,
上拆分这些字符串中的每一个。对于数组中的第一个字符串,它会给你{"2", "16"}
.
将第一个字符串解析为整数并将其添加到第一个向量中,解析第二个字符串并将其添加到第二个向量中。对初始数组中的每个字符串重复此操作 ({"2,16", "16,134", ...}
)
这可能有助于拆分字符串,并将它们解析为整数。
你可以试试这样的东西
#include <iostream>
#include <vector>
#include <sstream>
std::pair<std::vector<int>, std::vector<int>> ExtractPairsFromString(const std::string& p_string)
{
std::pair<std::vector<int>, std::vector<int>> result;
std::stringstream linestream(p_string);
std::string pair;
while (getline(linestream, pair, ' '))
{
std::istringstream iss(pair);
size_t delimiterPos = pair.find(',');
std::string left = std::string(pair.begin(), pair.begin() + delimiterPos);
std::string right = std::string(pair.begin() + delimiterPos + 1, pair.end());
result.first.push_back(std::atoi(left.c_str()));
result.second.push_back(std::atoi(right.c_str()));
}
return result;
}
int main()
{
std::pair<std::vector<int>, std::vector<int>> result = ExtractPairsFromString("2,16 16,134 15,631");
std::cout << "First vector (Left items):" << std::endl;
for (const auto& element : result.first)
{
std::cout << element << std::endl;
}
std::cout << "Second vector (Right items):" << std::endl;
for (const auto& element : result.second)
{
std::cout << element << std::endl;
}
std::cin.get();
return 0;
}
相关文章:
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- C++逗号分隔的输入数组代码过早退出
- 获取带有字符 X 的输入 X/X/etc 并用斜杠 / 分隔它
- 获取由空格分隔的未知大小的单行输入,并将其存储到整数数组中
- 如果用户输入两个或多个由空格分隔的字符串C++如何防止缓冲区溢出?
- 使用运算符将分隔的输入分隔>>变量
- 来自 2 个不同向量的输入,用逗号分隔
- 如何将输入重定向与特殊整数作为分隔线和直至EOF
- 按标记分隔输入
- 如何在用空格分隔的行中获得无限的输入
- 我如何使用CIN输入整数,每个数字都被逗号分隔
- 如何使用符号分隔字符串而不是空格的输入字符串流
- C++:如何输入用逗号(,)分隔的值
- 以C++分隔用户输入的时间
- 如何读取用户输入的逗号分隔整数
- 在 cpp 中使用 getline 输入数组中的空格分隔数字
- 分隔输入C++
- 避免在空格分隔输入后忽略()
- 使用getline分隔输入,使用逗号作为分隔符
- 如何检查cin中的空间分隔输入是否为严格双输入