无法在c+;中的循环后执行代码+; 我正面临C++中的一个问题,我不理解。

无法在c+;中的循环后执行代码+; 我正面临C++中的一个问题,我不理解。,c++,cpprest-sdk,C++,Cpprest Sdk,这是我的代码: auto DataArray = jvalue.at(U("data")).as_array(); std::cout << "Outside the loop, first output" << std::endl; for (int i = 0; i <= 10; i++) { auto data = DataArray[i]; auto dataObj = data.as_object(); std::wcout &

这是我的代码:

auto DataArray = jvalue.at(U("data")).as_array();
std::cout << "Outside the loop, first output" << std::endl;

for (int i = 0; i <= 10; i++)
{
    auto data = DataArray[i];
    auto dataObj = data.as_object();

    std::wcout << "inside the loop" << std::endl;
}

std::cout << "Outside the loop, second output" << std::endl;
代码似乎在循环结束后停止。 但是为什么呢

但是如果我把这句话注释掉

//auto data = DataArray[i];
//auto dataObj = data.as_object();
没有问题

顺便说一句,我正在处理cpprest并从api获取json对象数据。
jvalue
变量保存结果

如果我尝试捕捉代码:

try {
    auto data = DataArray[i];
    auto dataObj = data.as_object();
    std::wcout << "inside the loop" << std::endl;
}
catch (const std::exception& e) {
    std::wcout << e.what() << std::endl;
}
试试看{
自动数据=数据数组[i];
auto dataObj=data.as_object();

std::wcout我认为您应该使用
I<10
而不是
我确信
我提示:您的循环定义为从
I=0
运行到
I=10
(11次),但
“在循环内”
只打印了10次。调查一下可能会让你知道发生了什么。你怎么知道数组中只有
10个
元素?@LogicStuff我写的关于DataArray.size()的文章,之后,有10个循环,因为循环中有10个打印,所以在第11次迭代时失败,我想我故意将DataArray.size()更改为10,只是为了确保我只需要迭代到10个计数,但我不小心将'='添加到'
try {
    auto data = DataArray[i];
    auto dataObj = data.as_object();
    std::wcout << "inside the loop" << std::endl;
}
catch (const std::exception& e) {
    std::wcout << e.what() << std::endl;
}
for (int i = 0; i < 10; i++)
{
    auto data = DataArray[i];
    auto dataObj = data.as_object();

    std::wcout << "inside the loop" << std::endl;
}
for (int i = 0; i < DataArray.size(); i++)
{
    auto data = DataArray[i];
    auto dataObj = data.as_object();

    std::wcout << "inside the loop" << std::endl;
}