【问题标题】: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 内部启动,无需调试

标签: c++ visual-studio visual-studio-2015


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多