我是否正确使用static_cast?
Am I using static_cast correctly?
>我正在将字符串转换为字符数组。
我已经尝试过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::string
类substr
方法返回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());
相关文章:
- 如何理解C++标准N3337中的expr.const.cast子句8
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- C++Cast运算符过载
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- 收到错误"invalid use of non-static data member 'stu::n' "
- LNK1104:无法打开libpjproject-i386-Win32-vc14-Debug-Static.lib
- 我应该在 C++ 中何时/为什么使用 STATIC?
- 在VS2019项目中集成ImageMagick:x64-windows-static library
- 如何处理Boost Spirit X3导致Visual Studio 2019 "static initialization order fiasco"?
- "static char __ = []() -> char"的含义
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- 无法在 DLL 中链接 SDL2-static.lib
- 如何摆脱C++中未解析的外部符号"private: static char"错误?
- 错误:"cast"未命名类型void setCastDescription(std::string
- 通过使用 const-cast 的非常量引用来延长临时的寿命
- C++线程"Call to non-static member function without an object argument"
- 出现这种错误的原因是什么"invalid use of non-static data member "
- "(void) cast"与功能有什么区别 "__attributes__"来沉默未使用的参数警告?
- static是如何使用ClassA::m_variable处理所有类对象的
- 在[expr.static.cast]/4中,术语"一个可行函数"指的是什么