簡體   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