繁体   English   中英

如何在 Visual Studio Community 2015 上打开输入文件、C++?

[英]How to open input file, C++ on visual studio community 2015?

有谁知道为什么文件打不开? 我还尝试将“infile.txt”放入程序文件夹和调试文件夹中,但我用来检查打开错误的方式都触发了它无法打开的意思。 我知道我可以对位置进行硬编码,但我不想这样做。

我听说你应该做stringobj.c_str()但我不知道这是否准确?

#include "stdafx.h"

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main()
{
    ifstream infile;
    ofstream outfile;

    string fileloc = "infile.txt";

    infile.open(fileloc);


    if (!infile)
    {
        cout << "open fail 1" << endl;
    }

    bool fail = infile.fail();
    if (fail)
    {
        cout << "open fail 2";
    }

    return 0;
}

请注意,目录结构(至少对于VS2013)是

<base>
   - Solution Directory
     - Debug
     - Release
     - Project Directory
       - Debug
       - Release

默认情况下,程序在项目目录中运行(即使它是针对solution / debug目录构建的)。

如果在启动项目时接受了默认命名约定,则应将文件放在“Projects \\ ConsoleApplication1 \\ ConsoleApplication1”目录中,而不是“Projects \\ ConsoleApplication1”中。

在项目设置 - >调试中检查您的工作目录。 在那里提供您的文件。

首先,签名的文件

std::ifstream::open( const char * filename, ios_base::openmode mode=ios_base::in)

确实表明它需要一个const char *,正是std :: string :: c_str()所提供的。 但是,open有一个重载接受const str&,这意味着它在大多数实现中都以相同的方式工作。

否则,您正在努力解决的问题称为当前工作目录(或cwd)。 显然你不确定那个目录在哪里。 在Visual Studio上运行调试器时,可能与从命令行运行程序时的调试器不同,在各种IDE中可能有所不同。

我不确定你为什么要确保你的程序只在当前目录中按名称打开文件,而不是给出完整路径,但是......

您可能想查询当前工作目录是什么,这样您就可以在任何地方尝试解决这个问题。 在我的Visual Studio 2015中,目录最终成为ABOVE调试目录,但这完全取决于项目的配置方式,我们在这里看不到。

所以,试试:

std::string cwd = getcwd( NULL, 0 );

这需要Visual Studio中Windows上的头文件<direct.h> ,但它会为您提供您想要弄清楚的目录。

string fileloc = "infile.txt";

如果你把infile.txt放在cpp文件的同一个文件夹中,它应该没问题。

顺便说一句我删除你的第一行

#include "stdafx.h"

我使用cygwin控制台,可能会有轻微的差异

对于我的问题 - 我被 opencv 加载图像卡住了 - 我在 C++ 项目的根目录中放置带有 jpg 的目录是错误的

错误的:

在此处输入图像描述

正确的: 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM