例如:
char mem[100000];
int reg[8];
mem[36] = 'p'; // add char p to our 36th index of our char array
reg[3] = (int)mem[36]; // store value of mem[36] into reg[3]
现在我想在该int数组的索引3处打印char值。
到目前为止,我的思考过程引导我使用以下代码:
char * c =(char *)reg [3];
cout<< * c<< ENDL;
但是在尝试将其打印出来时,我仍然会得到奇怪的值和字符。
根据我的理解,整数等于4个字符。由于字符在技术上是一个字节,整数是4个字节。
所以我将一个字符存储到我的整数数组中作为4个字节,但是当我将其拉出时,存在垃圾数据,因为我插入的字符只有一个字节,而索引的大小是4个字节。
答案 0 :(得分:1)
你试过这个:
char mem[100000];
int reg[8];
mem[36] = 'p'; // add char p to our 36th index of our char array
reg[3] = (int)mem[36]; // store value of mem[36] into reg[3]
char txt[16];
sprintf(txt, "%c", reg[3]); // assigns the value as a char to txt array
cout<<txt<<endl;
这会打印出值&#39; p&#39;
答案 1 :(得分:0)
你不应该在这里使用指针;它足以与 class ChatApp {
constructor(){
//console.log('ChatApp constructor');
socket.init('ws://localhost:8000');
socket.registerOpenHandler(() => {
let message = new ChatMessage({ message: 'Hello' });
socket.sendMessage(message.serialize());
});
socket.registerMessageHandler((data) => {
console.log(data);
});
}
}
class ChatMessage {
constructor({
message: m,
user: u='Nader',
timestamp: t=(new Date()).getTime()
}) {
this.message = message;
this.user = user;
this.timestamp = timestamp;
console.log(message);
}
serialize(){
return {
message: this.message,
user: this.user,
timestamp: this.timestamp
};
}
}
一起使用:
char
但请注意,在尝试将char c = reg[3];
cout << c << endl;
填充到int
变量时,您可能会丢失信息。
答案 2 :(得分:0)
我不明白你的问题是什么。将char存储到int var中。您想要将其打印回来 - 只需将值转换为char并打印它
#include <iostream>
int main()
{
char mem[100];
int reg[8];
mem[36] = 'p'; // add char p to our 36th index of our char array
// store value of mem[36] into reg[3]
reg[3] = mem[36];
// store value of mem[36] into reg[4] with cast
reg[4] = static_cast<int>(mem[36]);
std::cout << static_cast<char>(reg[3]) << '\n';
std::cout << static_cast<char>(reg[4]) << '\n';
}
/****************
* Output
$ ./test
p
p
*/