[英]Visual Studio Community 2015 Installation (Visual 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控制台,可能會有輕微的差異
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.