用户输入文件路径
User-input file path
程序应该打开一个路径为用户输入的文本文件。接下来,它计算文件中包含的行数并输出它们。以下是我尝试过的:
#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;
相关文章:
- 如何将更多文件夹添加到c++include路径
- 从函数角度看ID到文件路径的内部与外部映射
- 在C++中设置基于操作系统的文件路径
- C++17 文件系统::remove_all 带有通配符路径
- 从 C 中的变量获取文件的路径,C++
- 将共享库的搜索路径更改为生成文件中提供的 rpath
- 修改生成文件以简化框架 #include 路径
- 将Visual Studio Code路径设置为.clang_format文件
- Windows 非 ASCII 文件路径
- 非 ASCII 文件路径窗口
- C++和带有国家符号的文件路径(也许用 UTF8 编码)
- 获取 H5::D ataSet 的hid_t和文件中的路径以使用 H5OCopy
- 在特定 Unicode 路径中创建文件
- 如何让用户在 tinyxml2 中输入 XML 文件的路径
- 如何将COM .tlb文件导入具有相对路径C++文件中?
- C++ 路径文件存在限制为 260 个字符
- QT-在pro中指定DLL路径.文件
- 路径文件存在导致链接器错误 2028/2019
- 选择QTableWidgetItem qt的路径文件
- 如何有一个正确的路径文件读取它到stringstream