我在使用字符的函数时遇到了一些问题

I am having some trouble with if function with char

本文关键字:遇到 问题 函数 字符      更新时间:2023-10-16

在这里,当我输入 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];时,你不会读入数组多达 5char秒,而是在阵列的第6个插槽中读取一个char,从而损坏周围的内存。

此外,symb[5] == 'co2'不是比较数组内容的正确方法。 您正在将第 6 个(无效(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;
}