-3

抱歉,忘记密码

这是不正确的代码。我一直试图让这个工作,但所有的逻辑运算符都不起作用。

#include <iostream>
#include <string>
using namespace std;
string repeat;
string repeatnum;
string prompt = "|-[]->";
int main()
{
string entry;
bool Running = true;
while(Running == true)
{
cout << "\n";
cout << prompt;
cin >> entry;
if(entry == "Exit") return 0;
if(entry == "Help") cout << "HELP:\nThsi is a simple program, try an input";
if(entry == "ChangePrompt")
{
    cout << "What do you want to change the prompt to?: ";
    cin >> prompt;
}
if(entry == "Repeat" || "repeat")
{
    cout << "What string do you want to repeat?: ";
    cin >> repeat;
    cout << "How many times do you want to repeat" << repeat << "(1-9)?: ";
    cin >> repeatnum;
    if(repeatnum > 0){}
}
}
char f;
cin >> f;
return 0;
}

这是我得到的错误。

Error:
C:\Users\Packard Bell\Desktop\test\main.cpp||In function 'int main()':|
C:\Users\Packard Bell\Desktop\test\main.cpp|29|error: no match for 'operator>' in 'repeatnum > 0'|
||=== Build finished: 1 errors, 0 warnings ===|
4

4 回答 4

2

因为在第 29 行,main.cpp您尝试做repeatnum > 0并且repeatnum是没有重载的类型operator >

于 2012-07-10T05:56:44.403 回答
1

除了repeatnum问题,这段代码没有做你想做的事

if(entry == "Repeat" || "repeat")

它应该是

if(entry == "Repeat" || entry == "repeat")
于 2012-07-10T09:47:38.683 回答
0

根据给定的信息,我只能猜测该变量repeatnum是一个类或结构的对象,您不能使用它直接将其与0. 如果repeatnum您定义了的类型,请添加一个重载的成员函数operator >并正确处理它。

class YourType
{
    // Class definition
public:
    int operator >( int var )
    {
       // Code for comparison
       // return result
    }
};
于 2012-07-10T06:45:00.787 回答
0

现在看到代码后。repeatnum 是一个字符串。您读取字符串的输入,然后将其与整数进行比较。现在字符串没有为整数定义运算符>,因此您需要在比较之前将字符串转换为整数。

atoi(repeatnum.c_str());

或者使用 stringstream 来做到这一点。

于 2012-07-10T05:56:44.610 回答