如何将字符从 int 转换为“出现”在控制台中?

Posted

技术标签:

【中文标题】如何将字符从 int 转换为“出现”在控制台中?【英文标题】:how to get char casted from int to 'appear' in console out? 【发布时间】:2021-09-05 22:33:25 【问题描述】:

我有一个向量,想将整数转换为字符,然后将转换后的字符推回向量。 我得到的是向量中的“不可见”元素,这不会导致明显的错误,增加 vec.size() 计数,但在控制台输出期间不显示。我该如何解决这个问题,使它们在向量中显示为正常/“可见”字符?有关错误的演示,请参见下面的代码。

#include <iostream>
#include <vector>

int main(int argc, const char * argv[]) 
    
    std::vector<char> test'a','b';
    
    int i = 5;
    char h = char(i);
    
    test.push_back(h);
    
    for(auto i: test)
        std::cout << "should be an element ->" << i << '\n';
    
    std::cout<< "size of vec is -> " << test.size();
    return 0;
    

【问题讨论】:

请注意整数0等价于字符'0'。数值为 0 的字符是不可打印的空字符。 要将单个数字 int “转换”为可打印字符,请尝试 char h = i + '0'; @Pyson 声明 std::vector<:string> 类型的向量并使用函数 std::to_string 将整数转换为字符串并将它们推送到 vetctor 根据您想要的(打印字符或值),您需要获取正确的字符代码点(请参阅@Yksisarvinen 的评论)转换为(无符号) int 分别在输出之前。旁注:如果要将值存储在 [-128; 127] 或 [0; 255] 你应该分别显式使用有符号或无符号字符,原始char 的符号是实现定义的。 正如其他人指出的那样,你想用这个做什么并不是很清楚。如果您需要“查看”那些无法打印的字符,我建议您使用以下内容:compilerexplorer 【参考方案1】:

如果我们检查您正在打印的内容

should be an element ->a
should be an element ->b
should be an element ->♣
size of vec is -> 3

以及数组中这些元素的值

vec[0] = 'a' (thats 97 integer value)
vec[1] = 'b' (thats 98 integer value)
vec[2] = '\x5' (thats 5 integer value)

您正在为您的程序获得正确的输出。 如果要将 5 转换为 char,则应添加 '0' 字符。 所以像

char = i + '0';

将在字符中存储 65 或“5”的整数值。

注意:C/C++ 中的字符只是 8 位数字,当您打印它们时,您会从 ascii 表中获得以下字符之一。 ascii 表中的某些字符是不可打印的字符,例如值为 0 的字符为 NULL。 TAB 值为 8(也可打印为 '\t')或 ESC 为 27。

【讨论】:

【参考方案2】:

感谢所有建议和 cmets。为了清楚起见,这是我试图实现的目标。

#include <iostream>
#include <vector>

int main(int argc, const char * argv[]) 
    
    std::vector<char> test'a','b';
    
    int i = 12345 ;
   
    
    std::string w = std::to_string(i);
    
    for(auto i : w)
        test.push_back(i);
        
    
    
    for(auto i : test)
        std::cout << "element in the vector -> " <<i << '\n';
    


【讨论】:

以上是关于如何将字符从 int 转换为“出现”在控制台中?的主要内容,如果未能解决你的问题,请参考以下文章

将字符从文件读取行转换为 int 转储核心

如何将特定字符从字符串转换为int(C)

无法将 pandas 列从字符串转换为 int

请问C语言中如何将int转换为float

如何将 std::string 转换为 int?

如何在 MVC .ASP NET 中将变量从字符串转换为 int [重复]