我正在尝试读取文件并打印内容。 由于某种原因,当我将鼠标悬停在输入上时,我看到 null。 我已确认该文件的路径是有效的。 有什么想法吗?我使用的是c++ 14,它是VS社区版附带的。
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string>
#include "ConsoleAppTest.h"
using namespace std;
using namespace N;
int main()
{
std::cout << "Hello World!\n";
string sReadFile = "C:\\Users\\Michele\\source\\repos\\ConsoleAppTest\\ConsoleAppTest\\readFile.txt";// = "";
std::cout << sReadFile; //looks good and link opens file in explorer
std::ifstream input(sReadFile);
}
我在网上找到了以下示例,并且正在以同样的方式执行此操作。
我的计划是循环遍历这些行并将每一行打印到控制台输出。
谢谢!
更新: 我按照下面的示例链接中的建议尝试了此操作,但文件无法打开,因此打印了错误消息。当我可以打开 cout 中打印的文件时,我不确定是什么导致它无法打开。
int main()
{
std::cout << "Hello World!\n";
ConsoleAppTest cats;
string sReadFile = "C:\\Users\\Michele\\source\\repos\\ConsoleAppTest\\ConsoleAppTest\\readFile.txt";// = "";
std::cout << sReadFile;
std::ifstream myfile;
myfile.open(sReadFile);
if (myfile.fail())
{
cerr << "Error opening file" << endl;
myfile.close();
}
string line;
while (getline(myfile, line))
{
cout << line << endl;
}
myfile.close();
return 0;
}
更新2: 尝试分离文件和路径,并使用当前路径,该路径看起来与文件所在的目录相同(不是执行的 dir/bin 文件夹)。对于存在它仍然返回 0。
...
namespace fs = std::experimental::filesystem;
...
std::cout << "Hello World!\n";
ConsoleAppTest cats;
fs::path currentPath = fs::current_path();
string filename = "readFile.txt";
fs::path filepath = currentPath / filename;
std::ifstream file(filepath);
std::cout << fs::exists(filepath); //returns 0
我发现,尽管我可以在文件位置的文件资源管理器中看到该文件,但当我转到那里的命令行并列出目录时,文件名实际上是 readFile.txt.txt。 它显示为文本文件类型的 readFile.txt。 我重命名了该文件并删除了多余的 .txt,代码找到了它。 感谢大家的帮助!