ZX2006788 2024-11-26 19:06 采纳率: 100%
浏览 109
已结题

[Error] ISO C++ forbids comparison between pointer and integer [-fpermissive]怎么回事

程序:

#include <bits/stdc++.h>
using namespace std;
int one()
{
    string one,two = "<";
    int i = 0;
    do
    {
        cin >> one;
        i += one.size();
        for(int j = 0; j<one.size()-1;j++)
        if(one[j] == "<") i=i-2;
    }while( one != "EOF");
    return i;
}
int main()
{
    int a = 0 , b = 0 , c;
    a = one()-3;
    b = one()-3;
    cin >> c;
    c = c/60;
    cout << b*1.0/c;
 } 

错误现象
[Error] ISO C++ forbids comparison between pointer and integer [-fpermissive]

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    错误提示 "[Error] ISO C++ forbids comparison between pointer and integer [-fpermissive]" 表示你的代码中存在指针和整数之间的比较,这在标准的ISO C++中是不允许的。具体来说,在你的代码中,这个问题发生在one()函数中。

    在这一行:

    string one, two = "<";
    

    你声明了一个字符串变量 one,然后试图初始化另一个字符串变量 two 为字符 "<"。这里的问题是 two 被初始化为一个字符而不是字符串,因此当你试图将它与字符串进行比较时(例如在 do...while 循环中的 while( one != "EOF");),编译器会报错。因为 < 是一个字符而不是字符串,不能与字符串 "EOF" 进行直接比较。

    为了解决这个问题,你应该将 two 初始化为一个包含字符 < 的字符串,例如 "<", 并且相应地修改比较条件。同时确保输入的字符串 one 是以某种方式表示结束的,例如特定的标记或特定的输入格式。另外,请注意在C++中通常不推荐使用 bits/stdc++.h 这个头文件,因为它包含了几乎所有的标准库,这可能会导致编译时间增加并可能导致一些不可预见的问题。最好明确地包含你需要的头文件。

    修正后的代码示例如下:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int one() {
        string one;
        string two = "<"; // 初始化为字符串 "<"
        int i = 0;
        do {
            cin >> one; // 从输入读取字符串直到遇到特定结束标记(如 EOF 或其他约定)
            // 其他逻辑处理...
        } while (one != two); // 这里改为与初始化的字符串进行比较
        return i; // 返回结果
    }
    
    int main() {
        int a = 0, b = 0, c;
        a = one() - 3; // 获取one函数的返回值并减去3赋值给a
        b = one() - 3; // 获取one函数的返回值并减去3赋值给b
        cin >> c; // 从输入读取c的值
        c = c / 60; // 其他逻辑处理...计算时间的分钟部分或其他需要处理的地方(这里的c是否有分钟意义需根据实际情况修改)
        cout << static_cast<double>(b) / c; // 输出b除以c的结果并转为浮点数显示小数部分(可能需要进一步考虑数据的逻辑合理性)
    }
    

    注意,上面的代码仅是一种修正方案示例,你需要根据实际需求进行调整。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月4日
  • 已采纳回答 11月26日
  • 创建了问题 11月26日