我是否正确使用static_cast?

Am I using static_cast correctly?

本文关键字:static cast 是否      更新时间:2023-10-16

>我正在将字符串转换为字符数组。

我已经尝试过static_cast这样做,我对编程有点陌生。我不确定我是否正确使用它。

string Password::encrypt(string p_user){
pass = p_user;
char word[pass.length()];
for(int i = 0; i < pass.length(); i++){
word[i] = static_cast<char>(pass.substr(i, i+1)); // Every letter in one index
}
return "";
}

错误如下:"无法转换'std::_cx11::basic_string

这里的问题是std::stringsubstr方法返回std::string,无法通过static_cast转换为char。让我为这个问题提供一个解决方法:

char word[pass.length()];
for(int i = 0; i < pass.length(); i++){
word[i] = static_cast<char>(pass.substr(i, i+1)[0]); // Here as it is a length of 1, we can access with index 0, which will give a char
}

事实上也不需要static_cast,你可以简单地写如下:

char word[pass.length()];
for(int i = 0; i < pass.length(); i++){
word[i] = pass[i];
}

希望这有帮助,谢谢,

拉杰库马尔

标准库中没有任何内容支持将std::string转换为char。因此,static_cast<char>(pass.substr(i, i+1))是一个无效的表达式。我不清楚你为什么要使用它而不是更直接的:

word[i] = pass[i];

此外。。。

用途

char word[pass.length()];

是非标准的。一些编译器支持将其作为扩展。请改用std::vector<char>

std::vector<char> word(pass.length());