2015-10-05 35 views
0

如果输入“'ABCD'',我希望输出为''ZABC''。 如果我输入''hello world'',输出必须是''gdkkn vnqkc''。如何将字符串中的字符转换为C++中的字母顺序的前一个字符

我这样做:

cout << "Enter text" << endl; 
cin >> input;` 

result_string = ConvertString(input); 

cout << endl << "The result is " << endl << result_string << endl; 

但我不知道如何定义ConvertString

谢谢你的帮助。 :)

+0

到目前为止您尝试过什么?正如经常指出的那样,SO不是一项免费编码服务。 – owacoder

+0

这就是我所做的至今,因为我不知道如何做到这一点,我不明白如何转换字符串中的每个字符,而不使用一些复杂的东西......(我刚开始学习,所有我知道的是非常基础)。 –

+0

我在Google和YouTube上到处寻找,并看到很多类似的东西,例如用数字转换一系列字母或用另一个字母转换输入中的每个字母,但似乎没有人问过这个。我只是要求一个小技巧,我不会要求某人为我编程,我只是想了解C++ –

回答

1

你将不得不访问字符串中的每个单独的字符。字符串允许你随机访问内存,所以你可以用for循环来完成。

string input; 
cout << "Enter text" << endl; 
cin >> input; 

//traverse the string 
for (int i = 0;i < input.size(); i++) 
{ 
//check for A or a and move it to Z or z respectively 
if(input[i] == 65 || input[i] == 97) 
input[i] += 26; 
//change the value to minus one 
input[i]--; 
} 

cout << endl << "The result is " << endl << input << endl; 
return 0; 
+0

谢谢你的帮助和你的时间菲利普,它真的很友善。 –

1

有没有听说过凯撒密码?

#include<iostream> 
#include<string> 
using std::endl; 
using std::cout; 
using std::cin; 


int main(){ 
    std::string input; 
    int count=0, length, n; 

    cout<<"enter your message to encrypt:\n"; 
    getline(cin,input); 
    cout<<"enter number of shifts in the alphabet:\n"; 
    cin>>n; 

    length=input.length();//check for phrase's length 

    for(count=0;count<length;count++){ 
     if(std::isalpha(input[count])){ 
      //lower case 
      input[count]=tolower(input[count]); 
      for(int i=0;i<n;i++){ 
       //if alphbet reaches the end, it starts from the beginning again 
       if(input[count]=='z') 
        input[count]='a'; 
       else 
        input[count]++;  
      }  
     }  
    } 

    cout<<"your encrypted message: \n"<<input<<endl; 

    return 0;  
} 
+0

谢谢杨帆! –

+0

非常值得一提的是* Caesar Cipher *术语,但是您正在“递增”而不是“递减”ASCII值,并且更改为小写可能会也可能不会被接受。 –

相关问题