C ++ - 从整数数组中插入和提取字符

时间:2017-10-07 02:07:23

标签: c++ arrays pointers char int

例如:

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个字节。

3 个答案:

答案 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
*/