【发布时间】:2020-12-18 18:28:43
【问题描述】:
我在将 int 转换为 char 时遇到问题。代码如下:
int main {
int i = 10;
char c[80];
std::vector<char> data;
sprintf(i,"%d",c);
data.push_back(c)
}
但我不断收到从 char* 到 std::vector 的无效转换...错误。有没有更简单的方法将整数转换为字符,然后将其存储在包含字符的向量中?由于之前的任务,我需要先将值作为 int 引入,然后将整数 10 作为 '10' 带入向量中。
【问题讨论】:
-
你的变量 c 不是一个字符,它是一个字符数组,你的向量数据包含字符,如果你想向向量添加一个字符,它的工作方式如下:
data.push_back('a'); -
“数据”是 char 的向量,而不是 char* 。您正在尝试将 char 而不是 char* 传递给 push_back。要将 char* 存储在向量中,请使用 vector
。但要小心存储局部变量的指针。在您的情况下, c 是本地的,它将在范围完成后被删除。 -
c是char的原始数组,因此它的类型是char*,因为它指向该数组的第一个元素。因此,您只能将该数组的元素(如c[0])推回该向量中。也许您想改用std::string? -
text和f声明在哪里? -
字符和字符串不是一回事。你真的想要一个字符向量,还是你想要一个字符串向量?不知道这是一个很难回答的问题。