如何在c ++中将字符串转换为Unsigned char ...
我有,
unsigned char m_Test[8];
Run Code Online (Sandbox Code Playgroud)
我想分配一个字符串"Hello world"来m_Test.
怎么做?
小智 20
首先,数组必须至少足以容纳字符串:
unsigned char m_Test[20];
Run Code Online (Sandbox Code Playgroud)
然后你使用strcpy.您需要转换第一个参数以避免警告:
strcpy( (char*) m_Test, "Hello World" );
Run Code Online (Sandbox Code Playgroud)
或者如果你想成为C++纯粹主义者:
strcpy( static_cast <char*>( m_Test ), "Hello World" );
Run Code Online (Sandbox Code Playgroud)
如果你想初始化字符串而不是分配它,你也可以说:
unsigned char m_Test[20] = "Hello World";
Run Code Online (Sandbox Code Playgroud)
strncpy(m_Test, "Hello world", sizeof(m_Test));
Run Code Online (Sandbox Code Playgroud)
这是关于strncpy的维基百科:
出于所有实际目的,strcpy 的答案是正确的,请注意 8 对您的字符串来说不够大。
如果你想真正迂腐,你可能需要这样的东西:
#include <algorithm>
int main() {
const char greeting[] = "Hello world";
unsigned char m_Test[sizeof(greeting)];
std::copy(greeting, greeting + sizeof(greeting), m_Test);
}
Run Code Online (Sandbox Code Playgroud)
原因是 std::copy 会将原始字符串中的字符转换为unsigned char. strcpy 将导致原始字符串中的字符被重新解释为unsigned char. 你没有说你想要哪一个。
该标准允许两者之间存在差异,尽管这种差异非常罕见:char在使用 1 的补码或符号大小表示的实现中,您需要签名。您几乎可以忽略这种可能性,但 IMO 值得了解,因为它解释了当您混淆指向char和 的指针时优秀编译器给您的有趣警告unsigned char。
| 归档时间: |
|
| 查看次数: |
50714 次 |
| 最近记录: |