c++ - 我是否必须重写一个函数才能在 QT 中工作?

标签 c++ windows qt

我有两个函数,一个将数组内容保存到文本文件,另一个函数将相同内容读入数组。一切都是用 VS 编写的,现在我正在尝试为我的应用程序制作一个 GUI。 我的保存到文件功能非常有用,但是当我尝试使用我的读取功能在 QT 中读取该文件时,什么也没有发生。我是否必须重写函数才能在 QT 中工作?如果不是,可能是什么问题? 如果 in.fail(),我可以“抛出”什么?

 void DH::read()
{

    ifstream in("text.txt");
    string strKcal=" ";
    int kcal=0;
    string strCarb=" ";
    double carb=0.0;
    string strProtein=" ";
    double protein=0.0;
    string strLipid=" ";
    double lipid=0.0;
    string name;
    string usrName;
    string usrName1;
    string usrName2;
    string date;
    string nrs;
    getline(in,nrs);
    this->nrOfDiets=atoi(nrs.c_str());


    if(!in.fail())
    {
        for(int i=0;i<this->nrOfDiets && in.good();i++)
        {
            getline(in,usrName1,' ');
            getline(in,usrName2);
            usrName=usrName1+ " " + usrName2;
            getline(in,date);
            getline(in,name,'\t');
            getline(in,strKcal,'\t');
            getline(in,strCarb,'\t');
            getline(in,strProtein,'\t');
            getline(in,strLipid);


            kcal=atoi(strKcal.c_str());
            carb=atoi(strCarb.c_str());
            protein=atoi(strProtein.c_str());
            lipid=atoi(strLipid.c_str());


            this->dh[i]=new Diet(name,kcal,protein,carb,lipid,usrName,date);

        }
    }
    else
        //cout<<"Error!"<<endl;

    in.close();
}

我知道我可以一直使用 in>> 而不是 getline,但由于某种原因它不起作用 :S

最佳答案

一般来说,不,您不需要做任何不同的事情来使正确的代码作为 Qt 应用程序的一部分工作。我没有详细研究您的代码,但至少乍一看似乎没问题。

但是,有些事情会有所不同。首先,图形程序中的控制通常是由命令行程序进行的。您不会显式地编写程序流程。相反,您将对事件(按钮点击、菜单选择等)使用react。其次,您通常通过一些不同的启动方法(单击图标或从 IDE 运行它)来运行它们,这些启动方法可以更改程序的当前工作目录等内容。

如果没有更多信息,我们无法告诉您您的问题是什么。但我会检查该程序实际上是从相对路径“text.txt”引用有效文件的目录运行的。此外,这可能听起来很疯狂,但请确认您的代码确实被调用了。

附带说明一下,你关于运算符的最后一句话>> 与 getline ......有时候继续做一些有用的事情很好,但你可能会花时间来弄清楚这样的事情可以的时候出去。了解为什么某些事情没有按照您认为的那样进行通常可以为您节省大量时间和以后的挫折感。

关于c++ - 我是否必须重写一个函数才能在 QT 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6043344/

相关文章:

c++ - STL推回: previous values getting modified when pushing a dynamically changing array

c++ - 有没有办法在不使用 COM 的情况下获取域中某些用户的电子邮件?

c++ - 我可以使用全局系统 Hook 来捕获单击了哪个文件吗?

c# - 如何在 Windows 中开发服务器

c++ - DeviceContext (HDC) 中的 Alpha channel

python - Pyqt - QProcess/readAllStandardOutput() - 编码?

c++ - LNK2022:元数据操作失败:重复类型中的字段声明不一致

c++ - std::move - std::string - 内部指针

c++ - Qt #define "signals"与 GStreamer (gst) 冲突

c++ - qml 元素的自定义渲染