有段字符串是这样的 String a="123,124,125"; 要把他变成数组[123,124,125]怎么做?
代码如下:
#include <stdio.h>
#include <string>
#include <vector>
using namespace std;
void SplitStr(std::string pStr, char ch,std::vector<std::string>& vReturn)
{
int nStartPos=0;
int nEndPos=0;
while((nEndPos = pStr.find(ch,nStartPos))> 0)
{
vReturn.push_back(pStr.substr(nStartPos,nEndPos - nStartPos));
nStartPos = nEndPos+1;
}
nEndPos=pStr.find('\0',0);
vReturn.push_back(pStr.substr(nStartPos,nEndPos-nStartPos));
}
int main()
{
string a="123,124,125";
vector<string> vout;
SplitStr(a,',',vout);
for (int i = 0; i < vout.size(); i++)
{
if (vout.at(i).empty())
{
continue;
}else
{
printf("%d ",atoi(vout.at(i).c_str()));
}
}
getchar();
getchar();
return 0;
}
给你个思路,先把字符串123、124、125提取出来,然后使用atoi函数转换成整型数据。atoi("123") = 123。
sscanf(a,"%d,%d,%d",&(i[0]),&(i[1]),&(i[2]);
一行就够了
供参考:
#include<string>
#include<stdio.h>
using namespace std;
int main()
{
int b[10]={0},j=0,i=0;
string a = "123,124,125";
while(a[i]){
if(a[i] != ',')
b[j] = b[j]*10 + a[i]-'0';
else j++;
i++;
}
for(i=0;i<=j;i++)
printf("%d ",b[i]);
return 0;
}