【发布时间】:2021-07-21 14:14:45
【问题描述】:
我试图只输入以 A 开头的字符串,如果使用其他字母会给出错误消息。我已经厌倦了:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main(){
char str[30];
if(str[0] == "A"){
cin.get(str, 30);
}else{
cout<<"Any name other than starting from A isn't supported."<<endl;
cout<<str<<endl;
return 0;
}
}
我收到此错误:trialz.cpp:在函数“int main()”中: trialz.cpp:7:18:错误:ISO C++ 禁止指针和整数之间的比较 [-fpermissive] 7 |如果(str [0] ==“A”){ | ^~~ 我是初学者,非常感谢您的帮助!
【问题讨论】:
-
不仅类型错误(将
const char*与char进行比较),而且逻辑是倒退的。您甚至在读取数据之前都在比较。str的内容是不确定的,所以即使你用if(str[0] == 'A')解决了第一个问题,你仍然会调用未定义的行为。如果您是初学者,我不能再强调将a good book(或三个)作为您学习的基础的重要性。 -
修复大括号。你可以这样做: if(str[0] == 'A') 如果你想使用“string”而不是“char”,那么你可以这样做: string str ="Ahello"; if(str.at(0) == 'A')
-
对字符串执行的第一个操作是测试第一个字符是否为
'A'。如果它是'A',那么您的代码会从用户那里读取一个字符串。您需要更改顺序 - 先读取字符串,然后测试其内容。此外,"A"是字符串文字,'A'是单个字母 - 当需要单个字符时不能使用字符串,反之亦然。此外,请考虑使用std::string而不是char的原始数组。 -
如果你不打代码,最好注意stackoverflow.com/questions/31816095/…
标签: c++