如何将消息转换为密码消息?

时间:2018-03-26 21:49:26

标签: c++

#include <iostream>
using namespace std;

int main()
{
    string message;
    cout << "Ahlan ya user ya habibi." <<endl;

    cout <<"what do you like to do today?" <<endl;
    cout <<"please enter the message:" <<endl;
    getline(cin,message);

    for(int i=0;i<message.size();i++)
    {
        if(string(message[i]==32))
        {
            cout<<char(message[i]);
        }
        else if(string( message[i])>=110)
        {
            int x = int(message[i])-13;
            cout<<char(x);
        }
        else
        {
            int x = string (message[i])+13;
            cout<<char(x);
        }
    }
    return 0;
}
  

E:\ my programe \ quiz \ main.cpp | 20 | error:没有匹配函数来调用&#39; std :: __ cxx11 :: basic_string&lt; char&gt; :: basic_string(char&amp;)&#39; |

     

E:\ my programe \ quiz \ main.cpp | 20 | error:来自&#39; char&#39;的无效转换到#char; char *&#39; [-fpermissive] |

     

E:\ my programe \ quiz \ main.cpp | 27 | error:没有匹配函数来调用&#39; std :: __ cxx11 :: basic_string&lt; char&gt; :: basic_string(char&amp;)&#39; |

     

E:\ my programe \ quiz \ main.cpp | 27 | error:来自&#39; char&#39;的无效转换到#char; char *&#39; [-fpermissive] |

1 个答案:

答案 0 :(得分:1)

std::string::operator[]会返回char&引用。您正在尝试构造具有单个char值的临时std::string对象作为输入,但std::string没有任何构造函数只接受单个char作为输入。这就是你收到错误的原因。

即使您可以从单个std::string构建char,也无法将std::string与整数进行比较。

您根本不需要所有这些string()(以及char())演员阵容(顺便说一下,您的第一个string()演员表格格式不正确)。 char是数字类型。您可以将char值直接与整数进行比较,并直接在char值之间添加/减去和整数,以生成新的char值。

请改为尝试:

#include <iostream>
using namespace std;

int main()
{
    string message;
    cout << "Ahlan ya user ya habibi." << endl;

    cout << "what do you like to do today?" << endl;
    cout << "please enter the message:" << endl;
    getline(cin, message);

    for(int i = 0; i < message.size(); i++)
    {
        if (message[i] == 32)
        {
            cout << message[i];
        }
        else if (message[i] >= 110)
        {
            char x = message[i] - 13;
            cout << x;
        }
        else
        {
            char x = message[i] + 13;
            cout << x;
        }
    }
    return 0;
}

Live Demo