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