你如何从一个变量改为另一个变量?

时间:2011-04-02 19:58:23

标签: c++

我有几个问题:

  1. 如何从字符串中获取某个字符?
  2. 如何获取int的字符?
  3. 你如何获得一个char的字符?
  4. 如何将字符串附加到字符串?
  5. 我只是制作了一个简单的键控密码......只是在玩耍来学习cpp。我知道java所以,如果你能与之相关,那就太棒了!

    这是我的代码所以请告诉我如何改进...谢谢! :)

    #include <string>
    
    using namespace std;
    
    string encrypt(string data, string pass) {
        // Use a Keyed Cipher //
        string encrypted;
        int index = 0;
        for (int x = 0; x < sizeof(data); x++) {
            int tmp = static_cast<int>(data.substr(x));
            int tmpPass = static_cast<int>(pass.substr(index));
            tmp += tmpPass;
    
            if (tmp > 126) {
                tmp -= 95;
            }
    
            if (index > sizeof(pass)) {
                index = 0;
            }
            encrypted += static_cast<char>(tmp);
        }
        return data;
    }
    

4 个答案:

答案 0 :(得分:2)

  

如何从字符串中获取某个字符?

通过使用索引运算符。 string::operator[]

  

如何获取int的字符?

int charToInteger = stringName[i] ;
  

如何将字符串附加到字符串?

使用string::append

从链接 -

  

的字符串&安培;追加(size_t n,char c);
  追加由字符c重复n次形成的字符串。

答案 1 :(得分:0)

首先使用字符串:const char& operator[] ( size_t pos ) const;例如:

char tmp = encrypted[x];

对于转换,您只需使用C风格的转化:

int tmp = (int)encrypted[x];

只要你使用sizeof(char) <= sizeof(int)的架构(例如德州仪器的一些计算器:),这通常就可以了。

但是,在您的代码中,您可以使用字符进行操作,因为字符也可以用作数字类型。

将char附加到字符串的最简单方法是使用+ =:

string s = "Hello worl";
s += 'd'; 

答案 2 :(得分:0)

  1. string s = "foo"; char c=s[1];
  2. char c = 'a'; int i = c;
  3. int i = 65; char c = (char) i;
  4. string s = "foo"; char c = 'X'; s += c;
  5. for (int x = 0; x < sizeof(data); x++)不起作用 - 使用data.size()而不是sizeof(data)

    int tmp = static_cast<int>(data.substr(x));也不起作用。如果您希望data[x]的ascii值只执行int tmp = data[x];

    if (index > sizeof(pass))无法使用 - 您需要使用pass.size()

    最后,你永远不会在循环中增加index,并返回错误的字符串。

    #include <string>
    
    using namespace std;
    
    string encrypt(string const & data, string const & pass) { // Pass arguments by const reference, not as values which are copied
        // Use a Keyed Cipher //
        string encrypted;
        int index = 0;
        for (int x = 0; x < data.size(); ++x) { // Loop over the length of the string, not the size of the string object
            int tmp = data[x]; // No need to cast
            int tmpPass = pass[index]; // No need to cast
            tmp += tmpPass;
    
            if (tmp > 126) {
                tmp -= 95;
            }
            ++index; // Remember to loop over the password as well
            if (index >= pass.size()) { // Check against length of string, not size of object
                index = 0;
            }
            encrypted += static_cast<char>(tmp);
        }
        return encrypted; // Return the encrypted string
    }
    

答案 3 :(得分:0)

  1. 如何从字符串中获取某个字符?
  2. 类“string”实现operator [],因此要获得“i”char,可以使用mystring [i]。 std :: string有一个名为“c_str()”的函数,它返回字符串中的“const char *”。 所以另一种从std :: string获取char的方法是*(mystring.c_str()+ i)。

    1. 如何获取int的字符? char是一个1字节的数据类型,因此您可以像在java中一样将char转换为int。

      char c ='a'; int i =(int)c;

    2. 如何获得char的int?

    3. 就像在Java中一样。注意int通常是4个字节(不一定是4个字节!!!),所以你可能会丢失数据,因为char是1个字节。

      int i=0xFFFF
      char c = (char)i;
      c is 0xFF! lost some data!
      
      1. 如何将字符串附加到字符串?
      2. std :: string实现operator + =所以你可以使用它。