我在将部分项目导入QT创建者时出现问题,因此我可以为其创建图形界面。 基本上,我现在最大的问题是程序不会从文本文件中读取数据。
Repo<Tree, 10> r1;
r1.setFileName("Trees.txt");
r1.loadFromFile();
assert(r1.getSize() == 4); //this gives me an error, since it considers the size to be 0(empty)
此代码应将我的数据从文件Tress.txt导入到容器中,但它在QT创建者中没有做任何事情(在Visual Studio中它完美地工作)。 函数setFileName(string n)和loadFromFile()是这些:
template <class T, int cap> void Repo<T, cap>::setFileName(string name)
{
fileName = name;
}
和
template <class T, int cap> void Repo<T, cap>::loadFromFile()
{
ifstream fin;
T obj;
fin.open(fileName);
while (fin >> obj)
{
elem.push_back(obj);
size++;
}
}
我该怎么办这个问题?不要告诉我必须使用QFile课程。
答案 0 :(得分:7)
当然,您 无法使用QFile
。如果你这样做了,你就会遇到同样的问题。 Qt不是魔术,它不会神奇地使其他代码无效。
您永远不会检查是否有任何错误。如果你这样做,你会注意到你的程序无法打开文件,因为你打开了一个相对路径的文件,但你无法控制程序的工作目录。您需要在Trees.txt
文件所在的目录中运行该程序,或者更好的是,通过UI或命令行参数为程序提供文件的绝对路径。
差异与Qt无关,只与你正在使用的IDE有关。无论您用于构建和运行代码的旧方法是什么,最终都会在Trees.txt
文件所在的文件夹中运行该程序。事实并非如此。转到Qt Creator中的“Projects” - &gt;“Build&amp; Run”窗格,选择当前项目配置的Run选项卡,然后选择正确的工作目录。