为什么 Visual Studio 在我的程序的后续运行中处理输出?

问题描述 投票:0回答:0

我正在编写一个程序来测试 std::sort 和 std::unique。该程序应该生成随机数,然后使用 for 循环推回 50 个随机数,然后使用 sort 将数字从低到高排序,然后使用 unique 去除重复数字,然后将它们输出到控制台。我使用一个名为 counter 的变量来生成行号,这样我就可以快速查看输出了多少项。

当我在 Visual Studio 2022 中运行我的程序时,它会按预期运行,然后如果我关闭它并再次运行它,它将破坏它,比如没有输出所有数字,或者输出乱序,在数字之间留下间隙,计数将是错误的。例如,计数器应该是显示有多少数字的行号,这是直接从我的控制台复制的这样一个输出:

1: 2
29:
20:
21:
22: 6
23: 6
24: 6
25: 6
26: 7
27: 72
28: 73
29: 74
30: 76
31: 77
32: 80
33: 81
34: 82
35: 87
36: 91
37: 92
38: 93
39: 94
40: 96
41: 97
42: 10


C:\Use
Press

正如您在视频中看到的那样,这甚至没有意义。如果我完全编辑我的程序,甚至添加一个换行符,程序也会正确运行,但如果我不修改它就运行程序,它会输出那些废话。我还发现,如果我出于某种原因删除 .pdb 文件,这将使程序输出预期的结果。但是我每次运行程序时都必须删除它才能这样做。这显然是不理想的。

这里是我运行的代码供参考:

#include <iostream>
#include <vector>
#include <chrono>
#include <string>
#include <random>
#include <algorithm>

int RandomNumber(std::mt19937& randomEngine);

int main()
{
    std::mt19937 randomEngine(std::chrono::high_resolution_clock::now().time_since_epoch().count());

    std::vector<int> numberStorage;

    for (int i{ 0 }; i < 50; ++i)
    {
        numberStorage.push_back(RandomNumber(randomEngine));
    }

    std::sort(numberStorage.begin(), numberStorage.end());

    auto duplicateNumber = std::unique(numberStorage.begin(), numberStorage.end());

    numberStorage.erase(duplicateNumber, numberStorage.end());

    std::cout << std::endl;

    int counter{ 1 };

    for (auto& i : numberStorage)
    {
        std::cout << counter++ << ": " << i << std::endl;
    }

    std::cout << std::endl;

    return 0;
}

int RandomNumber(std::mt19937& randomEngine)
{
    std::uniform_int_distribution<int> intDist(1, 100);

    int randomNumber{ intDist(randomEngine) };

    return randomNumber;
}

我在运行相同版本 Visual Studio 2022 的笔记本电脑上的在线 IDE 上运行了这段代码,我在我的 PC 上创建了一个新的测试帐户并在那里运行,代码运行良好,没有任何问题,所以它我的帐户出于某种原因。开一个新帐户是不可能的,我需要它才能在这个帐户上工作。我还卸载了 Visual Studio 并进行了全新安装,进行了系统还原并重新启动了我的电脑。删除 .pdb 文件是唯一修复它的方法。

我唯一能想到的是我今天在我的电脑上安装了 PVS 工作室。 VS 在今天之前从未这样做过,所以我认为必须如此,这是唯一有意义的事情。我当然已经卸载了它,但问题仍然存在。

我也试过通过 visual studio 提交问题报告,但是当我在界面上单击它并打开网页时,它一直告诉我它与 visual studio 断开连接,所以我运气不好。

我还制作了一个视频,这样你就可以看到这里发生了什么:https://www.youtube.com/watch?v=wwpJdcz2k4w

visual-studio console-application visual-studio-2022 pdb-files
© www.soinside.com 2019 - 2024. All rights reserved.