簡體   English   中英

如何從 C++ 中的字符串中拆分字符?

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

例如,如果我想將“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++];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM