字符串子串的截取有关问题 多谢了
字符串子串的截取问题 谢谢了!
比如我有一个字符串"0 3594.125 3594.125 770.000" (中间有空格但不知道是几个) 我想分别把0、3594.125、3594.125、770.000进行atoi转换后存放到事先定义好的变量中,请问要怎么实现??
------解决方案--------------------
#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;
}
------解决方案--------------------
先split之后,再trim
------解决方案--------------------
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));
------解决方案--------------------
有很多种做法,比如
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楼的做法。
------解决方案--------------------
比如我有一个字符串"0 3594.125 3594.125 770.000" (中间有空格但不知道是几个) 我想分别把0、3594.125、3594.125、770.000进行atoi转换后存放到事先定义好的变量中,请问要怎么实现??
------解决方案--------------------
#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;
}
------解决方案--------------------
先split之后,再trim
------解决方案--------------------
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));
------解决方案--------------------
有很多种做法,比如
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楼的做法。
------解决方案--------------------
- C/C++ code
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; }
------解决方案--------------------
先按着空格断开
然后trim一下空格就没有了
------解决方案--------------------
方法有很多啊,但都需要自己判断,没有现成的函数
------解决方案--------------------
可以先判断有几个空格,再使用sscanf()函数转换