【发布时间】:2015-08-04 22:24:37
【问题描述】:
我目前正在使用一个嵌入式系统,该系统将使用串行通信与各种设备进行通信。我使用uint8_t 变量作为嵌入式板发送和接收的缓冲区。我需要修改这些值(最好使用string),然后在修改后将它们转换回uint8_t。我创建了一个简单的测试代码来搞乱uint8_t 和strings。我遇到的问题是cout 的输出仅显示“GREE”(无论myString 的值如何,由于某种原因它总是只有4 个字符)。我已经尝试了几种方法来完成这项任务,非常感谢一些帮助。也许我错过了一些容易修复的东西?我已经在电脑上呆了将近 8 个小时了。
string myString = "GREETINGS";
const uint8_t *p = reinterpret_cast<const uint8_t*>(myString.c_str());
myString.assign(p, p + sizeof(p));
cout << myString << endl;
输出是:绿色
【问题讨论】:
-
p是一个指针。sizeof(p)将是指针的大小。如果您的字符串包含任意字节,则仅该指针不会知道字符串中包含多少字节。 -
我确实一直在看电脑太久,以至于错过了类似的东西哈哈!谢谢德鲁,刚刚修好了。让新鲜的眼睛偶尔达到顶峰是值得的。
-
Some say 那个字符串 self-
.assignment 是狡猾的