如何在c++中将字符串转换为无符号字符...
我有以下代码:
unsigned char m_Test[8];
我想将字符串"Hello world"
赋值给m_Test
。
如何实现?
如何在c++中将字符串转换为无符号字符...
我有以下代码:
unsigned char m_Test[8];
我想将字符串"Hello world"
赋值给m_Test
。
如何实现?
unsigned char m_Test[20];
然后你使用strcpy。你需要将第一个参数强制转换以避免警告:
strcpy( (char*) m_Test, "Hello World" );
或者如果你想成为一个C++纯粹主义者:
strcpy( static_cast <char*>( m_Test ), "Hello World" );
如果你想要初始化字符串而不是赋值,你也可以这样说:
unsigned char m_Test[20] = "Hello World";
就实际目的而言,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);
}
sizeof
不是一个函数,而 sizeof(greeting)
是一个整数常量表达式。在某些情况下,您可以以某种方式在整数常量表达式中“使用变量”,这是其中之一,因为没有使用 greeting
的值,只使用了类型,即 const char[12]
。 - Steve Jessopstrlen(greeting)
是不被允许的。 - Steve Jessopstd::string
的c_str()
函数来获取字符串中的char*
。该方法基本上返回指向c风格字符串的指针。此后,你可以使用常规的字符串复制函数,如strcpy
或strncpy
将值复制到test
中。strcpy
函数:unsigned char m_Test[8];
strcpy((char*)m_Test, "Hello world");
你可以使用strcpy函数,但要注意m_Test只有8个大小,会发生溢出。Strcpy不会检查这一点,你将会得到一个异常。
char * strcpy ( char * destination, const char * source );
string uInput;
cout << "Enter message" << endl;
getline(cin, uInput);
unsigned char dataS[uInput.size()+1];
strcpy(reinterpret_cast<char*>(dataS), uInput.c_str());
我认为这个例子将来会帮助其他人更多。