读取变量,while循环以C++的“RangeEnError”终止 试图从C++学习书籍中编写一个练习代码,编写一个由while循环组成的程序,每次循环中读取两个int,然后打印出来。输入终止“|”时退出程序。 我编码如下: #include "C:\Users\Erez\Documents\Dev C++ Projects\std_lib_facilities.h" int main(){ vector<int> v; int value {0}; int i {1}; while (cin >> value) { v.push_back(value); if (i % 2 == 0) { //using the % modulo to cout couples. cout << v[i] << '\t' << v[i-1] << "\n"; // cout i + (i-1) } ++i; } }

读取变量,while循环以C++的“RangeEnError”终止 试图从C++学习书籍中编写一个练习代码,编写一个由while循环组成的程序,每次循环中读取两个int,然后打印出来。输入终止“|”时退出程序。 我编码如下: #include "C:\Users\Erez\Documents\Dev C++ Projects\std_lib_facilities.h" int main(){ vector<int> v; int value {0}; int i {1}; while (cin >> value) { v.push_back(value); if (i % 2 == 0) { //using the % modulo to cout couples. cout << v[i] << '\t' << v[i-1] << "\n"; // cout i + (i-1) } ++i; } },c++,while-loop,C++,While Loop,输入由空格或行分隔的两个值时,我得到以下错误: 四, 5. 在抛出“Range\u error”实例后调用terminate 什么:范围错误:2 此应用程序已请求运行时以异常方式终止它。 有关更多信息,请联系应用程序的支持团队 非常感谢您的帮助:您的以下声明: if (i % 2 == 0){ // } cout << v[i] << '\t' << v[i-1] << "\n"; // cout i + (i-1) 在while循环和以下语句

输入由空格或行分隔的两个值时,我得到以下错误:

四, 5. 在抛出“Range\u error”实例后调用terminate 什么:范围错误:2

此应用程序已请求运行时以异常方式终止它。 有关更多信息,请联系应用程序的支持团队

非常感谢您的帮助:

您的以下声明:

if (i % 2 == 0){
//
}
cout << v[i] << '\t' << v[i-1] << "\n"; // cout i + (i-1)
在while循环和以下语句中的第二次迭代中变为true:

if (i % 2 == 0){
//
}
cout << v[i] << '\t' << v[i-1] << "\n"; // cout i + (i-1)

向量、数组等的索引从索引0开始

您正在将索引初始化为1,并从1开始递增


因此,v[i]是指最后一次按下后的值。这是一种试图访问超出范围的内容的尝试,它会导致程序崩溃。

在我看来,v[i]偏离了向量的末尾。您已将2个整数压入v,因此有效索引将为0和1,但我将为2,因此您正在访问v[2]和v[1]。但我认为它在扔之前不会打印任何东西。格雷西亚斯·穆查科斯!我用向量大小替换了索引大小,它的工作原理与预期一样:谢谢大家。我认为如果将I初始化为零,那么if%2==0将在循环的第一次迭代中变为真,并将在cout中的v[I-1]上导致越界错误。