【发布时间】:2019-08-27 05:20:33
【问题描述】:
我一直收到错误消息说
[错误] ISO C++禁止指针和整数比较[-fpermissive]
不知道怎么解决。
我在 stackoverflow 中搜索过有同样问题的人,但只想到了这个:c++ compile error: ISO C++ forbids comparison between pointer and integer 没有回答我的问题。让我感到困惑的是,错误在 HERE 注释指示的行上,即 if 语句,但我在条件部分看不到任何整数。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int main() {
char in[100];
gets(in);
int len = strlen(in);
std::string s(in);
int count = 0;
for (int i = 0; i < len; i++) {
if (s.at(i) == " ") { // <-- HERE
count += 1;
}
}
cout << count;
}
假设输入是 Hello World,我希望输出是 1,但我没有得到任何输出。
【问题讨论】:
-
永远不要永远使用
gets!这是一个 dangerous 函数,已从 C 和 C++ 中删除。如果要从标准输入读取一行,请使用std::getline读入std::string。 -
至于你的问题,我建议你退后几步,回到你的书、教程或课堂笔记,想想字符串之间的区别(用双引号分隔@987654331 @) 和字符(由单引号
'分隔)。 -
我知道您很困惑——在您非常熟悉 C++ 中的隐式类型转换之前,该消息毫无意义。
-
@Some 程序员老兄
std::getline如果输入超过一行,不会给出 \n 吗?
标签: c++ arrays string pointers type-conversion