为啥 Visual Studio 不能在“不调试就启动”模式下打开文件?

Posted

技术标签:

【中文标题】为啥 Visual Studio 不能在“不调试就启动”模式下打开文件?【英文标题】:Why doesn't Visual Studio open file in "Start without debugging" mode?为什么 Visual Studio 不能在“不调试就启动”模式下打开文件? 【发布时间】:2016-05-11 18:36:15 【问题描述】:
#include "stdafx.h"
#include <fstream>
#include <iostream>

using namespace std;

int main()

    char ch;
    int a = 0;
    int e = 0;
    int i = 0;
    int o = 0;
    int u = 0;

    std::ifstream file("myfile.txt", std::ifstream::in);

    if (file.is_open())
    
        while (file.get(ch))
        
            if (ch == 'a')
                a++;
            if (ch == 'e')
                e++;
            if (ch == 'i')
                i++;
            if (ch == 'o')
                o++;
            if (ch == 'u')
                u++;
        

        std::cout << "Repetitions of a: " << a << std::endl;
        std::cout << "Repetitions of e: " << e << std::endl;
        std::cout << "Repetitions of i: " << i << std::endl;
        std::cout << "Repetitions of o: " << o << std::endl;
        std::cout << "Repetitions of u: " << u << std::endl;

    

    else std::cout << "Error in opening file" << std::endl;

    return 0;

我正在尝试使用 Visual Studio 2015 制作一个简单的 c++ 程序来计算 txt 文件中元音字母的出现次数。 此代码在调试模式下工作,但是当我在没有调试的情况下(从 Visual Studio 内部)启动它时,它不会打开文件。为什么会发生,我该如何解决? txt文件在程序同目录下

当我使用完整路径时,我没有遇到问题,例如Y:\Documents\Visual Studio 2015\Projects\stream\stream\myfile.txt 但我想知道为什么它不适用于相对路径,例如我的文件.txt

谢谢!

【问题讨论】:

文本文件不是在Debug文件夹中吗? 除非您更改了项目的设置,否则它应该与项目文件位于同一文件夹中。 在 MSVS 中,文本文件需要位于源文件所在的相同位置。你的文本文件在哪里? “不调试就运行”到底是什么意思?从 Visual Studio IDE 内部启动它而不进行调试?还是从 IDE 外部启动它? 从 VS 内部启动,无需调试 【参考方案1】:

Visual Studio 会根据您执行程序的方式更改程序的“工作目录”。如果从 Visual Studio IDE 中运行它,默认情况下它将使用源目录作为其工作目录(这可以在项目属性中更改)。如果不这样做,程序将使用执行程序的目录。

为了安全起见,您可以尝试在源目录和目标目录(创建可执行文件的位置)中保留文件的副本,以确保它可以轻松找到它。

【讨论】:

我将我的文件复制到目标目录(有.exe 的地方),但我仍然遇到同样的问题..什么是源目录?还有 .vcxproj 文件的那个?如果是这样,myfile.txt 也已经存在。有没有办法在“不调试模式下启动”中选择工作目录?感谢您的回答! @Ale “源目录”是您的 .h 和 .cpp 文件(通常)所在的位置。如果您将目录结构的屏幕截图添加到问题中,这可能会有所帮助,以便我们查看内容的布局方式并查找差异。 @Ale 还有look into using _getcwd 来追踪工作目录。如果您可以询问然后进行相应调整,则无需猜测它在哪里。 抱歉,我无法发布图片,但我将 myfile.txt 放在 3 个位置(“stream”是我的项目名称):......\Visual Studio 2015\Projects\stream\Debug .........\Visual Studio 2015\Projects\stream\Release .........\Visual Studio 2015\Projects\stream\stream

以上是关于为啥 Visual Studio 不能在“不调试就启动”模式下打开文件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这段代码不能在 Visual Studio 2010 中编译和运行?

为啥我不能在没有安装Visual Studio的机器上运行调试版的.NET程序

为啥“if constexpr”不能与 Visual Studio 2017 15.3 一起编译?

为啥按值传递 string_view?为啥 Visual Studio 不能对此进行优化?

Visual Studio 调试/加载非常慢

为啥我的Visual Studio 2010 运行时不能显示汉字?