我正在尝试学习C ++作为我的第一语言,并且我想为我的这个愚蠢的问题道歉。 我想用整数填充两个向量并显示其大小,但是每次检查它们的元素数量时,都会收到意外的结果。也许我缺少一些基本知识。这是我的代码:
`
var Fire = [];
var fire = function FireGen()
{
this.particle = [];
var part = function Particle()
{
};
this.particle.push(new part);
};
Fire.push(new fire);
console.log(Fire[0].particle.length);
每次在此糟糕的代码中,int_var的第一个值都会转到第二个向量,该向量中只能包含数字> 16。如果有人告诉我我错了,我将不胜感激。
答案 0 :(得分:2)
我推荐以下策略。
std::istringstream
从行中提取必要的数据。std::string line;
while (getline(std::cin, line) )
{
if ( line == "stop")
{
break;
}
std::istringstream str(line);
if ( str >> int_var )
{
// Data extraction was successful. Use the data
if (int_var > 16)
{
adults.push_back(int_var);
}
else if (int_var <= 16)
{
kids.push_back(int_var);
}
}
else
{
// Error extracting the data. Deal with the error.
// You can choose to ignore the input or exit with failure.
}
}
答案 1 :(得分:0)
这是使用std::stoi
的替代解决方案,正如我的评论所建议的:
#include<vector>
#include<string>
#include<iostream>
int main(/*int argc, char** argv*/)
{
std::string entry;
std::vector<int> adults;
std::vector<int> kids;
int int_var;
while (std::getline(std::cin, entry) && entry != "stop")
{
try
{
int_var = std::stoi(entry);
if (int_var > 16)
{
adults.push_back(int_var);
}
else
{
kids.push_back(int_var);
}
}
catch (const std::exception& /*ex*/)
{
std::cout << "Oops, that wasn't a valid number. Try again.\n";
}
}
std::cout << "Number of adults: " << adults.size() << '\n';
std::cout << "Number of kids: " << kids.size() << '\n';
}