我确信我犯了一些明显的错误。我搜索了我的问题,但我找不到类似的问题;道歉,如果它在某处。
基本上,我只想完成一系列向量的条目。程序编译,我可以完成第一个向量;但是,它会跳过第二个和第三个向量,程序结束。如果我在每个向量之间输入cout << "Something" << endl;
,我可以使它工作。代码如下:
int main()
{
vector<string> name;
string temp_name;
for (unsigned int counter1 = 0; counter1 < 10; ++counter1)
{
getline(cin, temp_name);
name.push_back(temp_name);
}
vector<int> int1;
int temp_int1 = 0;
for (unsigned int counter2 = 0; counter2 < 10; ++counter2)
{
cin >> temp_int1;
int1.push_back(temp_int1);
}
vector<int> int2;
int temp_int2 = 0;
for (unsigned int counter3 = 0; counter3 < 10; ++counter3)
{
cin >> temp_int2;
int2.push_back(temp_int2);
}
return 0;
}
我只是玩代码并遇到了这个...... 我确信它显而易见,但任何帮助都表示赞赏!
答案 0 :(得分:0)
不确定是否是这种情况,但是您正在调用attr1
向量,但可能想要在上面创建的向量上调用它 - int1
。
第二个循环也一样。
答案 1 :(得分:0)
提取字符串后,您需要删除EOL字符。
getline(cin, temp_name);
name.push_back(temp_name);
// Add this line
cin.ignore(1);
答案 2 :(得分:0)
似乎当您开始输入第二个矢量时,您输入的数据不是数字。在这种情况下,输入流会出现错误状态并忽略所有其他输入
您可以通过插入另外一对语句来检查此假设
vector<int> int1;
int temp_int1 = 0;
if ( !cin ) cout << "Some error occured" << std::endl;
for (unsigned int counter2 = 0; counter2 < 10; ++counter2)
{
cin >> temp_int1;
int1.push_back(temp_int1);
}
vector<int> int2;
int temp_int2 = 0;
if ( !cin ) cout << "Some error occured" << std::endl;
for (unsigned int counter3 = 0; counter3 < 10; ++counter3)
{
cin >> temp_int2;
int2.push_back(temp_int2);
}