vc++ 中如何截取字符串 有关Left 和 Right

echo1004 2008-04-10 05:28:19
我要读取一个文件中的数据,文件数据示范如下:
20070108 110.26 20.54 72.0
20070110 112.23 22.94 -18.4
20070112 110.05 21.01 23.9
20070112 112.53 23.02 11.8
每次读取一行,里面是四个数据,我想把它们分别存入四个CString变量中,然后在转换成数字,从而能进行一定的计算,我写的试验代码如下:
     CString line="20070116 110.55 21.21 -15.3 ";
int pos1 = line.Find(' ');
CString st = line.Left(pos1);
//int pos11 = line.Find(' ');
CString s2 = line.Right(pos11);

int pos2 = s2.Find(' ');
CString slon = s2.Left(pos2);
    //int pos22 = s2.Find(' ');
CString s3 = s2.Right(pos22);

int pos3 = s3.Find(' ');
CString slat = s3.Left(pos3);
//int pos33 = s3.Find(' ');
CString sdian = s3.Right(pos33);

MessageBox(st);
MessageBox(slon);
MessageBox(slat);
MessageBox(sdian);

但是这样怎么也得不出结果,有没有高人帮我分析一下啊?
...全文
836 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
llst1129 2009-01-09
  • 打赏
  • 举报
回复
学习了,谢谢各位!!
echo1004 2008-04-11
  • 打赏
  • 举报
回复
谢谢大家,我的问题已经解决啦,
读取的文件比较大,大家的建议我都试过啦,又学到了很多东西,谢谢大家,
我最后用了c里面的freopen+scanf,希望以后还能得到大家的指教
echo1004 2008-04-11
  • 打赏
  • 举报
回复
vb中有这样的语句,很方便九八四个数字撞到四个变量里面了,
Input #1, T, Lon, Lat, Dian
vc中能不能不通过字符串中转,直接读出来放进四个数字变量啊?
Cricketol 2008-04-10
  • 打赏
  • 举报
回复
CString line="20070116 110.55 21.21 -15.3 ";

int pos = line.Find(' ');
CString s1 = line.Left(pos); //pos是从0开始的序号,这里要pos就不包括空格了
line = line.Right(line.GetLength()-(pos+1)); //去右边总长减pos+1

结果为
line 为 110.55 21.21 -15.3
s1 为 20070116
pos 为 8

楼主方法是对的,只是在计算时失误了
  • 打赏
  • 举报
回复

stringstream conv;
int a;
double b,c,d;
conv<<"20070116 110.55 21.21 -15.3 ";
conv>> a >>b >>c >>d ;
printf("%d %f %f %f",a,b,c,d);
wqvbjhc 2008-04-10
  • 打赏
  • 举报
回复
 CString  s="20070116 110.55 21.21 -15.3 ";  

char *p, *t;


/* Establish string and get the first token: */
t= s.GetBuffer(0);//把 CString 转化为纯字符串。所以 s 如果是字符串类型就更简单,不用转化了
p= strtok(t," ");
while( p != NULL )
{
/* While there are tokens in "string" */
MessageBox(p);
/* Get next token: */
p = strtok( NULL, " ");
}

7,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧