string类型的值是“1 2 3 4 5 6”,现在如何将这个string类中的整数分离出来,成为int a={1,2,3,4,5,6}
答案:1 悬赏:40 手机版
解决时间 2021-03-24 12:17
- 提问者网友:几叶到寒
- 2021-03-23 17:08
用C或C++
最佳答案
- 五星知识达人网友:从此江山别
- 2021-03-23 17:40
楼上答案有两个小问题:while(*(p ++)) 和 a[i++] = (int)*p;
可以是:
string str = "1 2 3 4 5 6";
const char* p = str.data();
int a[6]={0};
int i = 0;
while(*(p))
{
if (*p == ' ')
{
p++;
continue;
}
a[i++] = atoi(p++);
}推荐一个c++ string最好的tokenize,借助c的strtok:
int tokenize(const std::string& src, const std::string& tok, vector& out)
{
const int ERROR_CODE_SUCCEED = true;
const int ERROR_CODE_INPUT_EMPTY = -1;
const int ERROR_CODE_ALLOC_FAILED = -2;
if(src.size() == 0 || tok.size() == 0) return ERROR_CODE_INPUT_EMPTY;
char *buf=NULL;
buf = new char[src.size()+1];
if(NULL == buf) return ERROR_CODE_ALLOC_FAILED;
strncpy(buf,src.c_str(),src.size()+1);
char *p=strtok(buf,tok.c_str());
while(p)
{
out.push_back((string)p);
p=strtok(NULL,tok.c_str());
}
return ERROR_CODE_SUCCEED;
}用法:
string str = "1 2 3 4,5,6";
vector substr;
if(true != tokenize(str," ,",substr)) return; //useless result "substr", omit it.
int a[6]={0},i=0;
for(vector::iterator it = substr.begin(); it != substr.end(); ++it)
{
a[i] = atoi((*it).c_str());
cout< }
在windows平台把strtok换成可重入的、线程安全的strtok_r更好。
可以是:
string str = "1 2 3 4 5 6";
const char* p = str.data();
int a[6]={0};
int i = 0;
while(*(p))
{
if (*p == ' ')
{
p++;
continue;
}
a[i++] = atoi(p++);
}推荐一个c++ string最好的tokenize,借助c的strtok:
int tokenize(const std::string& src, const std::string& tok, vector
{
const int ERROR_CODE_SUCCEED = true;
const int ERROR_CODE_INPUT_EMPTY = -1;
const int ERROR_CODE_ALLOC_FAILED = -2;
if(src.size() == 0 || tok.size() == 0) return ERROR_CODE_INPUT_EMPTY;
char *buf=NULL;
buf = new char[src.size()+1];
if(NULL == buf) return ERROR_CODE_ALLOC_FAILED;
strncpy(buf,src.c_str(),src.size()+1);
char *p=strtok(buf,tok.c_str());
while(p)
{
out.push_back((string)p);
p=strtok(NULL,tok.c_str());
}
return ERROR_CODE_SUCCEED;
}用法:
string str = "1 2 3 4,5,6";
vector
if(true != tokenize(str," ,",substr)) return; //useless result "substr", omit it.
int a[6]={0},i=0;
for(vector
{
a[i] = atoi((*it).c_str());
cout< }
在windows平台把strtok换成可重入的、线程安全的strtok_r更好。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯