在这里,当我输入 CO2 时,它正在处理“else”语句,如果我输入任何其他内容,它仍然是相同的
我尝试将“co2”更改为“co2”,但它甚至不起作用
int main(int nNumberofArgs, char* pszArgs)
{
char symb[5];
cout << "Enter Symbol: ";
cin >> symb[5];
if (symb[5] == 'co2')
{
cout << "This is Carbon-Dioxide" << endl;
}
else
{
cout << "Error" << endl;
}
return 0;
}
最佳答案
你的代码全写错了。
语句 char symb[5];
声明了一个固定大小的数组,最多可以容纳 5 个 char
元素。但是,当您执行 cin >> symb[5];
时,您并不是将最多 5 个char
读取到数组中,而是读取单个 char
到数组的6th 槽中,破坏了周围的内存。
此外,symb[5] == 'co2'
不是比较数组内容的正确方法。您正在将 6th(无效)char
与单个多字节字符进行比较,而不是将数组的全部内容与多字符字符串进行比较。
尝试更像这样的东西:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char symb[5];
cout << "Enter Symbol: ";
cin.get(symb, 5);
if (strcmp(symb, "co2") == 0)
{
cout << "This is Carbon-Dioxide" << endl;
}
else
{
cout << "Error" << endl;
}
return 0;
}
也就是说,使用 std::string
而不是 char[]
更好:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string symb;
cout << "Enter Symbol: ";
cin >> symb;
if (symb == "co2")
{
cout << "This is Carbon-Dioxide" << endl;
}
else
{
cout << "Error" << endl;
}
return 0;
}
关于c++ - 我在使用 if 函数时遇到了一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58329235/