将字符串转换为int和char

时间:2019-08-13 17:22:43

标签: c++ string int

如何在C ++中将具有固定位数的字符串转换为int和char? 例如:我需要将“ A1920139”转换为char“ A”,int 192(字符串中的后三个位置),int 01(后两个位置)和int 39(后两个位置)。

到目前为止,我仅设法单独获取每个int(1、9、2、0等)。我不知道如何获取char或为int定义固定数量的位置。这是我设法写的:

string userstr;
int* myarray = new int[sizeof(userstr)];

userstr = "A1920139";

for (i = 1; i < userstr.size(); i++) {
   myarray[i] = userstr[i] - '0';
}

for (i = 1; i < userstr.size(); i++) {
   printf("Number %d: %d\n", i, myarray[i]);
}

最终,我需要找到类似char="A"int_1=192int_2=01int_3=39的东西

2 个答案:

答案 0 :(得分:2)

如果我理解正确,则希望在固定位置解析字符串,在这种情况下,您可以像这样使用substr()stoi()

std::string userstr = "A1920139";
int myarray[3];

myarray[0] = std::stoi(userstr.substr(1, 3));
myarray[1] = std::stoi(userstr.substr(4, 2));
myarray[2] = std::stoi(userstr.substr(6, 2));

std::cout << "int_1=" << myarray[0] << ", int_2=" << myarray[1] << ", int_3=" << myarray[2] << std::endl;

答案 1 :(得分:1)

substr(pos, len)将从长度pos的位置len开始获得一个子字符串。

stoi会将字符串转换为整数。

#include <string>
#include <iostream>

int main()
{
    std::string userstr = "A1920139";

    char c = userstr[0];
    int n1 = std::stoi(userstr.substr(1, 3));
    int n2 = std::stoi(userstr.substr(4, 2));
    int n3 = std::stoi(userstr.substr(6, 2));

    std::cout << c << ' ' << n1 << ' ' << n2 << ' ' << n3 << std::endl;
}
相关问题