比如我有一个字符串"0 3594.125  3594.125  770.000" (中间有空格但不知道是几个) 我想分别把0、3594.125、3594.125、770.000进行atoi转换后存放到事先定义好的变量中,请问要怎么实现??

解决方案 »

  1.   

    #include "stdafx.h"
    #include <iostream>
    #include <sstream>
    #include <string>
    using namespace std;int _tmain(int argc, _TCHAR* argv[])
    {
    string s("0 3594.125 3594.125 770.000");
    stringstream ss;
    ss<<s;
    float a[4];
    for(int i=0;i<4;i++)
    {
    ss>>a[i];
    cout<<a[i]<<endl;
    }
    return 0;
    }
      

  2.   

    CString strSource="0 3594.125 3594.125 770.000";strSource.Trim();int nIndex=0;
    CArray<int,int> res;
    while (nIndex=strSource.Find(' ')>=0)
    {
    res.Add(atoi(strSource.Left(nIndex)));
    strSource=strSource.Mid(nIndex+1);
    strSource.Trim();
    }res.Add(atoi(strSource));
      

  3.   

    有很多种做法,比如
    C函数
    char buffer[100];
    int a,,b,c,d;
    strcpy(buffer,"0 3594.125 3594.125 770.000");
    sscanf(buffer,"%d%d%d%d",&a,&b,&c,&d);或者如1楼,3楼的做法。
      

  4.   

    int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
    {
    TCHAR szText[] = _T("0    3594.125   3594.125   770.000");
    TCHAR seps[] = {_T(" ")};
    TCHAR* token = NULL;
    token = _tcstok(szText, seps);
    while(NULL != token)
    {
    _tprintf(_T("%d\n"), _ttoi(token)); token = _tcstok(NULL, seps);
    } return 0;
    }
      

  5.   

    先按着空格断开
    然后trim一下空格就没有了
      

  6.   

    可以先判断有几个空格,再使用sscanf()函数转换