C++ 如何从一个变量更改为另一个变量?

C++ 如何从一个变量更改为另一个变量?,c++,C++,我有几个问题: 如何从字符串中获取特定字符 如何将char转换为int 如何将int转换为char 如何将字符附加到字符串中 我只是在做一个简单的密码。。。只是到处玩来学习cpp。我知道java,所以如果你能与之相关,那就太好了 这是我的代码,请告诉我如何改进。。。谢谢!:) #包括 使用名称空间std; 字符串加密(字符串数据、字符串传递){ //使用密钥密码// 字符串加密; int指数=0; 对于(int x=0;x126){ tmp-=95; } 如果(索引>大小(通过)){ 指数=0;

我有几个问题:

  • 如何从字符串中获取特定字符
  • 如何将char转换为int
  • 如何将int转换为char
  • 如何将字符附加到字符串中
  • 我只是在做一个简单的密码。。。只是到处玩来学习cpp。我知道java,所以如果你能与之相关,那就太好了

    这是我的代码,请告诉我如何改进。。。谢谢!:)

    #包括
    使用名称空间std;
    字符串加密(字符串数据、字符串传递){
    //使用密钥密码//
    字符串加密;
    int指数=0;
    对于(int x=0;x126){
    tmp-=95;
    }
    如果(索引>大小(通过)){
    指数=0;
    }
    加密+=静态广播(tmp);
    }
    返回数据;
    }
    
    如何从字符串中获取特定字符

    通过使用索引运算符

    如何将char转换为int

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

    使用

    从链接-

    字符串和附加(大小n,字符c)
    追加一个字符串,该字符串由字符c重复n次构成


    首先是字符串:
    constchar&operator[](size\t pos)const例如:

    char tmp = encrypted[x];
    
    对于转换,您可以只使用C样式转换:

    int tmp = (int)encrypted[x];
    
    只要您使用的是
    sizeof(char)架构,这通常是可行的
    
  • string s=“foo”;字符c=s[1]
  • charc='a';int i=c
  • inti=65;char c=(char)i
  • string s=“foo”;字符c='X';s+=c
  • for(int x=0;x
    不起作用-使用
    data.size()
    而不是
    sizeof(data)

    inttmp=static_cast(data.substr(x))也不起作用。如果需要
    data[x]
    的ascii值,只需执行
    int tmp=data[x]

    if(index>sizeof(pass))
    不起作用-您需要使用
    pass.size()

    最后,在循环中永远不会增加
    索引,并且返回错误的字符串

    #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
    }
    
    #包括
    使用名称空间std;
    字符串加密(字符串常量和数据,字符串常量和传递){//通过常量引用传递参数,而不是作为复制的值
    //使用密钥密码//
    字符串加密;
    int指数=0;
    对于(int x=0;x126){
    tmp-=95;
    }
    ++index;//记住还要循环使用密码
    如果(index>=pass.size()){//检查字符串的长度,而不是对象的大小
    指数=0;
    }
    加密+=静态广播(tmp);
    }
    return encrypted;//返回加密字符串
    }
    
  • 如何从字符串中获取特定字符
  • 类“string”实现了操作符[],因此要获取“i”字符,可以使用mystring[i]。 string有一个名为“c_str()”的函数,它返回字符串内部的“const char*”。 因此,从std::string获取字符的另一种方法是*(mystring.c_str()+i)

  • 如何将char转换为int? char是一个1字节的数据类型,所以您可以像在java中一样将char转换为int

    字符c='a'; int i=(int)c

  • 如何将int转换为char

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

    int i=0xFFFF
    char c = (char)i;
    c is 0xFF! lost some data!
    
  • 如何将字符附加到字符串中

  • string实现操作符+=以便您可以使用它。

    实际上,他还可以执行
    str.append(1,'a')。更多:我主张将
    string::push_back
    置于
    string::append
    之上,因为
    append
    没有一个重载,它接受单个
    char
    ,而这正是所要求的。@ildjam-使用给定的方法,
    string&append(size\t n,char c)可以完成。请看评论中的@Muggen示例。非常感谢您。。。多亏了你,我的问题解决了yoou@user-很高兴有帮助。谢谢
    
    string s = "Hello worl";
    s += 'd'; 
    
    #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
    }
    
    int i=0xFFFF
    char c = (char)i;
    c is 0xFF! lost some data!