2016-05-14 13 views

回答

2

你可以使用stringstream;

例如:

#include <vector> 
#include <string> 
#include <sstream> 
int main() 
{ 
    std::string line="1 2 3 4   5"; 
    int n; 
    std::vector<int> v; 
    std::stringstream s(line); 
    while(s>>n){ 
     v.push_back(n); 
    } 
    return 0; 
} 
+0

[错误]模板名'std :: vector'无参数列表无效使用 –

+0

[错误]变量'std :: stringstream s'有初始值设定项但不完整类型 –

+0

我已将代码更改为完整的工作程序。 – SHR

0
#include <cctype> 
#include <vector> 
#include <string> 

string line = "1 2 3 4   5"; 
vector<int> nums; 

for(char i : line) { 
    if(isspace(i)) { 
    continue; 
    } 
    else { 
    nums.push_back((int) i - 48); 
    } 
} 
+0

所以你要将char''1'投射到一个'int',它会给出值为49的整数。我不认为这个问题的要求是什么。 。 。 – Mike

+0

[错误]基于范围的'for'循环在C++ 98模式中是不允许的 –

+0

@ tagi-asadullazadeh对不起,但我通常解决C++ 11中的C++问题 – ivanhu42

0

试试这个:

int convert(char *input, int **v) 
{ 
if (input==NULL) 
{ 
printf("The string is NULL"); 
return 0; 
} 
else 
{ 
    if ((*v)==NULL) 
{ 
unsigned int count=0; 
for (int i=0;input[i]!='\0';i++) 
    if (isdigit(input[i])) 
       count++; 
    (*v)=(int*)malloc(count*sizeof(int)); 
} 
char aux[2]={'\0','\0'}; 
unsigned int count=0; 
for (int i=0;input[i]!='\0';i++) 
    if (isdigit(input[i])) 
    { 
    aux[0]=input[i]; 
    (*v)[count]=atoi(aux); 
    count++ 
    } 
} 
} 

下一次,你应该尝试拿出一个解决自己和询问之前展现给我们。