编写一个简单的代码并遇到问题我不知道如何处理。我试着通过搜索来调查它,但我找不到任何帮助,每个人的答案都有点高于我的头脑。请有人像小孩子一样解释这个,哈哈。感谢。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string invCode = "";
string lastTwoChars = "";
cout << "Use this program to determine color of furniture.";
cout << "Enter five-character inventory code: ";
cin >> invCode;
if (invCode.length() == 5)
{
lastTwoChars = invCode.substr(3,2);
if (lastTwoChars == 41)
{
cout << "Red";
}
if (lastTwoChars == 25)
{
cout << "Black";
}
if (lastTwoChars == 30)
{
cout << "Green";
}
}
else
cout << "Invalid inventory code." << endl;
system("pause");
return 0;
}
答案 0 :(得分:6)
lastTwoChars是一个字符串。您必须将其与字符串进行比较,或者至少与const char *
或const char[]
进行比较。
表达式lastTwoChars == 41
将lastTwoChars与41进行比较 - int
。这不是字符串的定义行为。
相反,在引号中加上41以使其成为const char[]
(具体为const char[3]
):
if (lastTwoChars == "41")
看起来你在代码中多次这样做了。
答案 1 :(得分:3)
据推测,错误是抱怨您无法将字符串与数字进行比较。它们是两种不同的类型,与某些语言不同,它们之间没有神奇的转换(或比较)。
您想要与另一个字符串进行比较:
if (lastTwoChars == "25")
// ^ ^
答案 2 :(得分:1)
lastTwoChars
是字符串,您在这些语句中将其与 int 进行比较:
if (lastTwoChars == 41)
{
cout << "Red";
}
if (lastTwoChars == 25)
{
cout << "Black";
}
if (lastTwoChars == 30)
{
cout << "Green";
}
这违反了字符串的已定义行为。您必须将其与字符串或字符* 进行比较。
if (lastTwoChars == "41")
{
}
cout << "Red";
.
.
.
现在"41"
在这种情况下是 const char * ,可以与字符串或字符* 进行比较。
答案 3 :(得分:0)
#include <iostream>
#include <string>
using namespace std;
int main()
{
string invCode = "";
string lastTwoChars = "";
cout << "Use this program to determine color of furniture.";
cout << "Enter five-character inventory code: ";
cin >> invCode;
if (invCode.length() == 5)
{
lastTwoChars = invCode.substr(3,2);
if (lastTwoChars == "fourty five") // you declared lastTwoChars as string therefore you have to compare letters not integers which are numbers.
{
cout << "Red";
}
if (lastTwoChars == "twenty five") //same
{
cout << "Black";
}
if (lastTwoChars == "thirty") // same
{
cout << "Green";
}
}
else
cout << "Invalid inventory code." << endl;
cin.get(); // better than system("pause");
return 0;
}