用户输入文件路径

User-input file path

本文关键字:路径 文件 输入 用户      更新时间:2023-10-16

程序应该打开一个路径为用户输入的文本文件。接下来,它计算文件中包含的行数并输出它们。以下是我尝试过的:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string path = NULL;
string garbage = NULL;
int cnt = 0;
cout << "Enter file path: ";
cin >> path;
ifstream inFile(path.c_str());
if (inFile)
{
    while (!inFile.eof())
    {
        getline(inFile, garbage);
        ++cnt;
    }
}
inFile.close();
cout << endl;
cout << path << " has " << cnt << " lines";

cin.ignore();
cin.get();
return 0;
}

这就是我得到的:

程序:C:\Windows\SYSTEM32\MSVCP120D.dll文件:c:\program files(x86)\microsoft visual studio 12.0\vc\include\xstring线路:1168表达式:无效的空指针

注意:我下面的课程只向我展示了ifstream和ofstream使用的方法的基本知识,比如open、close和eof。所以我很感激只有这些的解决方案,因为我相信你知道很多方法。

std::string是一个合理的容器类,与std::vector类似,但具有一个API,该API具有许多额外的面向字符串的函数。

特别是,在char*方面,它的使用与传统的C风格字符串处理不同,我认为这就是您尝试使用NULL作为初始值设定项的想法。(在现代C++中,应该使用C++关键字nullptr来创建空指针,而不是旧的C风格宏NULL

string path = NULL;实际上所做的是将NULL解释为const char*,然后尝试在NULL指向的位置读取C样式字符串,以便将其复制到path中。由于NULL是null,而不是实际指向字符串,因此您会得到引用的错误消息。

您真正想要做的是通过string path;简单地使用默认构造函数,它将path初始化为空字符串。

不要使用毫无意义的NULL——它们不是指针:

string path;
string garbage;