gpt4 book ai didi

C++ 字符 ASCII 值到字符串

转载 作者:行者123 更新时间:2023-11-30 01:57:59 26 4
gpt4 key购买 nike

非常基本的问题。我在将 char 转换为指向实际字符的 char* 时遇到问题。谷歌搜索得到了关于 strcpy、string、sprintf 等的信息。在尝试了很多很多次试图理解这个问题之后,我仍然无法让它工作。

我有一个字符数组 recv_msg,其中包含我需要的字符的 ASCII 值。我需要将字符(不是值)存储在 vector msg 中。

我有什么:

std::vector<char> msg;
char recv_msg[max_buffer_length];
...
int i;
for (i=0;i<bytes_transferred;i++) {
msg.push_back(recv_msg[i]);
}
// Problem: when I process my msg I see 49 instead of '1'.

如果我执行以下操作作为健全性检查,我确实得到了我需要的行为。也就是说,我看到的是“5”而不是 53(5 的 ASCII 代码)。

std::vector<char*> msg;
...
int i;
char *val;
for (i=0;i<bytes_transferred;i++) {
msg.push_back(val);
}
// No problem: when I process my msg I see '5' instead of 53.

因此我需要将 ASCII 码值 (char) 转换为它们的字符表示形式 (char *)。我到底该怎么做?

我想解决这个阶段的问题,而不是在处理消息时做ASCII -> 字符转换。

最佳答案

char 只是一个数字,所以如果您将其视为 53 而不是 '5',那是因为您就是这样正在显示它。

您可以更改为将传入消息存储为字符串,例如:

std::vector<std::string> msg;
char recv_msg[max_buffer_length];
...
int i;
for (i=0;i<bytes_transferred;i++) {
msg.push_back(std::string(&recv_msg[i], 1));
}

但如果您真正拥有的只是单个字符,这似乎效率不高。另一种方法是在您对字符“做某事”时转换为字符串,例如:

std::string str(&msg.back(), 1);

甚至:

char str[2];
str2[0] = msg.back();
str2[1] = '\0';

关于C++ 字符 ASCII 值到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17979325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com