如何在C++中从字符串中分割字符

How do I split characters from a string in C++?

本文关键字:字符串 分割 字符 C++      更新时间:2023-10-16

例如,如果我想将"A123456789";转换成10个不同的字符串或整数,我该怎么做?

类似:

T129542154

进入:

String s = T
int 1=1
int 2=2
int 3=9
int 4=5
int 5=4
int 6=2
int 7=1
int 8=5
int 9=4

我在谷歌上搜索过,但大多数都是将单词与短语分开,或者有一些特殊的字符要分开,而不是将单个字符分开。

由于输入字符串正好是10个字符,由一个后面跟着9位数字的字母组成,因此可以很容易地将单个字符分隔为变量,例如:

std::string input = "T129542154";
std::string s(input, 0, 1);
int i1 = input[1] - '0';
int i2 = input[2] - '0';
int i3 = input[3] - '0';
int i4 = input[4] - '0';
int i5 = input[5] - '0';
int i6 = input[6] - '0';
int i7 = input[7] - '0';
int i8 = input[8] - '0';
int i9 = input[9] - '0';

简单的方法类似于

#include <string>
#include <algorithm>
std::string s = "S124822854"; // 1 letter, followed by 9 digits
char letter = s[0];
int digits[9];
std::transform(s.begin() + 1, s.end(), digits, [](char ch){ return ch - '0'; });

这使用一个数组来保存整数(您可以很容易地使用std::vectorstd::array(。

int length = s.size();
vector<int> sint, vector<char> schar; vector<int> whatitis;
for(int i=0; i<length; i++){
if(s[i]>='0' && s[i]<='9'){
sint.push_back(s[i]-'0');
whatitis.push_back(1);
}

else{
schar.push_back(s[i]);
whatitis.push_back(2);
}
}
int one=0, two=0;
for(int i=0; i<length; i++){
if(whatitis[i]==1)
cout<<sint[one++];
else
cout<<schar[two++];
}