2016-05-14 15 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

のように、 '' 1 ''という文字を 'int 'にキャストして、整数に49を渡します。私は質問が何を求めているとは思わない。 。 。 – Mike

+0

[エラー]範囲ベースのforループはC++ 98モードでは許可されていません –

+0

@ tagi-asadullazadeh申し訳ありませんが、私は通常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++ 
    } 
} 
} 

次の時間が解決策を自分で来て、尋ねる前に、私たちにそれを表示します。

関連する問題