首页 > 解决方案 > 如何在 C++ 中将 const char* 转换为整数?

问题描述

我有这些变量。

static constexpr int size{70};
const char* str;
std::array<int_least8_t, size> digits;

如果 str 是“1110”,我希望它是数字 [1,1,1,0]

int i=0;
while (*cci)
{
    digits[i]=*cci; // I need some method to convert it
    +cci;
    i++;
}

标签: c++castingc++17

解决方案


我在这里为你做了例子

#include <iostream>
#include <array>
#include <string>
#include <algorithm>

static constexpr int size{70};
const char* str = "1110";
std::array<int_least8_t, size> digits;

int main()
{
    int i = 0;
    for(auto c = str; *c; ++c, ++i) {
        digits[i] = *c - '0';
    }
        
    std::cout << "Count=" << i << std::endl;
    std::for_each(std::begin(digits), std::begin(digits) + i, [](const auto& Value) {
        std::cout << "Value=" << std::to_string(Value) << std::endl;
    });
    
    return 0;
}

Output:
Count=4
Value=1
Value=1
Value=1
Value=0

在 MSVC 编译器中,我使用它看起来像

typedef signed char int_least8_t;

推荐阅读