Qt错误iso c++禁止指针和整数之间的比较-fpermissive

Posted

技术标签:

【中文标题】Qt错误iso c++禁止指针和整数之间的比较-fpermissive【英文标题】:Qt error iso c++ forbids comparison between pointer and integer -fpermissive 【发布时间】:2018-08-18 08:07:09 【问题描述】:

我使用 Qt 4.5.1,在此控制台应用程序中,当我想在 if 语句 行接收用户输入时,会收到以下错误:

iso c++禁止指针和整数比较-fpermissive

这是我的代码:

#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])

   QCoreApplication a(argc, argv);
   char ans;
   QDir mDir;
   QString mPath("A:/inetpub/wwwroot/xampp");
   if (mDir.exists(mPath))
      qDebug() << mDir.exists();

   else 
      qDebug() << "Do you wanna create the path? Y / N";
      // getline(cin, ans);
      cin >> ans;
      if (ans == "y") 
        qDebug() << "Now I create one";
        mDir.mkpath(mPath);
       
   

   return a.exec();

我还有另一个琐碎的分离问题;为什么我不能在 Qt 中以这种方式使用 getline(cin,string) 函数?

【问题讨论】:

“我有另一个琐碎的分离问题” - 然后发布第二个问题。请每个问题只回答一个问题。 @JesperJuhl,你是对的。我想我可以在这段代码中问另一个小问题。反正我不会再同时质疑两个问题了。 【参考方案1】:

您将string literalchar 进行比较

  if (ans == "y") 

应该是

  if (ans == 'y') 

回答你的第二个问题。 getline() 用于从输入流中读取字符串或行,而不是单个 char。 语法如下。

istream& getline (istream& is, string& str);

【讨论】:

亲爱的@kiran Biradar,你是对的。谢谢,它解决了。但是您能否也回答一下为什么我不能在代码中那样使用“getline”函数? 亲爱的@kiran Biradar,你是对的,它完全解决了问题。我想知道,因为我可以在 VsStudio 中以这种方式对 char 使用 getline。 也许你在想ifstream::getline

以上是关于Qt错误iso c++禁止指针和整数之间的比较-fpermissive的主要内容,如果未能解决你的问题,请参考以下文章

ISO C++禁止指针和整数之间的比较?

ISO C++ 禁止指针和整数之间的比较 [-fpermissive]| [c++]

错误帮助:ISO C++ 禁止声明没有类型的“向量”

如何调试“ISO C++ 禁止声明没有类型的‘汽车’”?

错误:ISO C++ 禁止声明没有类型的“对象”

ISO C++ 禁止可变大小数组(编译错误)