无法在Visual Studio Express中使用简单的ifstream

时间:2014-06-23 16:22:27

标签: c++ visual-studio-2012 ifstream

我正在尝试学习C ++而且正在file input/output section上。我碰到了一堵砖墙,因为我的测试应用程序显然不能在Visual Studio Express 2012中工作。这是我的代码:

// ConsoleApp03.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    ifstream file_reader;
    file_reader.open("C:\temp.txt");

    // Test to see if the file was opened
    if (!file_reader.is_open() ) {
        cout << "Could not open file!" << endl;
        return 255;
    }
    string line;
    // Read the entire file and display it to the user;
    while (getline(file_reader,line)) {
        cout << line << endl;
    }

    // Close the file
    file_reader.close();
    return 0;
}

每次我运行时,我都会得到#34;无法打开文件!&#34;。我已经验证正在打开的文件确实存在,并且我有足够的权限阅读。我尝试过其他文本文件,包括在我的文档文件夹等其他不同位置,但结果总是一样的。我的文本文件非常简单,只包含两行文本。我很高兴在Notepad ++中打开这个文件,该文件没有特殊属性(系统,只读等)。我甚至尝试过将文件转换为ANSI和UTF-8,但没有运气。

我已经看过类似于此处的其他问题,但这些问题似乎并不适用于我(例如:ifstream::open not working in Visual Studio debug modeifstream failing to open

只是为了显示文本文件有多简单,这是我从命令提示符输入它:

 C:\>type C:\temp.txt
 Hi
 There

1 个答案:

答案 0 :(得分:3)

这可能会或可能不会解决您的问题,但\后跟char是转义序列。所以你的文件路径实际上是无效的。尝试

file_reader.open("C:\\temp.txt");

\t实际上意味着标签。请参阅here