c语言字符串转数组求助

有段字符串是这样的 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;
}