c++ - 在C++中连接两个字符

标签 c++

我的要求是连接两个字符。例如

 int main()
 {
       char c1 ='0';
       char c2 ='4';
       char c3 = c1+c2;
       cout<< c3;
 }

我期望的值是 04。但我得到的是 d。 我知道 char 是单字节的。我的要求是在 C3 的单个字节中可以合并/加入/连接 c1、c2 并将值存储为 04

最佳答案

char 不是string。因此,您可以先将第一个字符转换为字符串,然后再添加下一个字符,例如:

int main()
{
    char c1 ='0';
    char c2 ='4';
    auto c3 = std::string(1,c1)+c2;
    std::cout<< c3;
}

什么是“魔法”std::string(1,c1): 它使用以下形式的 std::string 构造函数:std::string::string (size_t n, char c);。因此它用给定 c1 的一个字符“填充”字符串,即 0

如果你添加字符,你会得到添加它的数值的结果:

int main() {
    std::cout << (int)c1 << std::endl;
    std::cout << (int)c2 << std::endl;
    std::cout << (int)c1+c2 << std::endl;
    std::cout << char(c1+c2) << std::endl;
}

0 中的 int 数值是 48,4 中是 52。两者相加得到 100。100 是 d 在 ascii 编码中。

关于c++ - 在C++中连接两个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51017979/

相关文章:

c++ - 在 64 位 x86 机器中读/写双值是原子的

c++ - 为什么我们需要 std::nullopt

c++ - 创建自定义迭代器时如何获取 std::pair 的第一个和第二个?

c++ - 如何为一系列整数值专门化 C++ 模板?

旧版本 GCC 的 C++/Fortran 间语言 ABI 问题

c++ - 这些放置新宏是否正确?

c++ - 系统时间更改时 wait_until 的 condition_variable 解决方法

c++ - RVO、移动操作和困境

c++ - 在 Debug模式下访问冲突,但在 Release模式下正常

c++ - 如何跳出内部 for 循环并返回到父 for 循环