我已经在这个问题上坚持了几个小时了。我有代码逐字处理 txt 文件并对输入进行哈希处理。 但是我什至无法获取打开 txt 文件的代码。我使用过 eclipse 和 Visual Studio,我确保 txt 文件与其他文件位于同一文件夹中,并在 VS 中将其添加到项目中。由于某种原因,它仅适用于 Visual Studio,并且仅适用于我的 4 个文件中的 1 个。我认为这个 1 文件在我出于某种原因将内容复制到另一个文件后开始工作。我在构建时没有收到任何错误或警告,但我不断收到错误“打开文件时出错”。在 Eclipse 和 VS 中它只是崩溃。请帮助如果您需要任何背景信息,请告诉我,我非常感谢您的帮助。
#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
#include <sstream>
#include "HashType - Copy.h"
using namespace std;
int main() {
for (int b : {33, 37, 39, 41}) {
ifstream inFile("hashText1.txt");
if (!inFile) {
cerr << "Error opening file." << endl;
return 1;
}
int primeSize;
string line;
if (getline(inFile, line)) {
stringstream ss(line);
ss >> primeSize;
}
HashType<string> hashTable(primeSize);
buildHashTable(inFile, hashTable, 1, b);
}
return 0;
}
正如我提到的,它仅适用于 1 个文件,并且仅适用于 VS,但不适用于任何其他文件或根本不适用于 Eclipse!
这个问题非常非常普遍。
...将文件名作为参数传递给您的程序。然后告诉 IDE 在运行程序时提供完整的文件路径作为参数。您可以在所有 IDE 中执行此操作。在 MSVS 中,它位于 Project → Settings → Debug → Program Arguments(我最后检查过)。
quux.cpp
int main( int argc, char ** argv )
{
if (argc != 2)
{
std::cerr << "usage:\n"
"quux FILENAME\n";
return 1;
}
std::ifstream f( argv[1] );
...
}
...就是硬编码完整路径。这种解决方案让教授和助教们彻夜难眠,不得不修改你的程序才能简单地工作。
std::ifstream f( "C:/Users/Jhgg/Programming/AssignmentN/hashText1.txt" );