以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
错误提示 "[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的结果并转为浮点数显示小数部分(可能需要进一步考虑数据的逻辑合理性)
}
注意,上面的代码仅是一种修正方案示例,你需要根据实际需求进行调整。