为啥 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 一起编译?