把字串中的數字轉為 int 儲存到 vector 中
阿新 • • 發佈:2019-02-13
工作中自己寫的一個,儲存用。。。
typedef std::vector<INT8> CardsVec;
CardsVec CardsSToI(std::string strCards, char sign)
{
int i = 0;
std::string tmpStr;
CardsVec cardsVec;
static char numChar[] = "0x123456789";
for (; i < strCards.size(); )
{
int i = 0;
std::string tmpStr;
CardsVec cardsVec;
static char numChar[] = "0x123456789";
for (; i < strCards.size();)
{
// 查詢是否是有效的字串 從右向左,查詢字串中最右邊的匹配字元位置
// 在s中查詢sub子串出現的位置 char *strstr(const char *s, const char *sub);
char *p = strchr(numChar, strCards[i]);
if (p)
{
tmpStr += strCards[i];
}
if (strCards[i + 1] == sign || strCards[i + 1] == '\0')
{
if (tmpStr.size() == 0 && i >= strCards.size())
{
if (i >= strCards.size())
{
// 如果不這樣 會引起死迴圈
return cardsVec;
}
else
{
i++;
continue;
}
}
try
{
cardsVec.push_back(std::stoi(tmpStr, nullptr, 16));
}
catch (std::exception)
{
return cardsVec;
}
tmpStr.clear();
i += 2;
}
else
{
i++;
}
}
return cardsVec;
}
....
....
....
std::string strCards = "0x01 0x02 0x03 "; // 輸入的數字字元後面加上一個空格或者字元
呼叫:
CardsVec needVec = CardsStoi(strCards, ' ');
...
...
...