求教C++中将字符串转换为数组的方法

hl_cx 2012-03-07 11:08:00
小弟现在有个疑问,描述如下:
我定义了一个变量,并且通过算法得到了值,代码如下:
CString strAllData;
strAllData += strTempFft;//经过调试,strAllData 的值为"-1.111317 -1.234257 -0.866633 -0.549730";
我的需求是要把strAllData的值存到数组里面,大概要得到
char input [] = "-1.111317 -1.234257 -0.866633 -0.549730";这样的结果,请问代码要怎么写?

另外还有一个问题,原程序里有段代码
i = 0;
while ((fscanf (input, "%f%f", xreal + i, ximag + i)) != EOF)
{
i ++;
}
n = i; // 要求 n 为 2 的整数幂
FFT (xreal, ximag, n);

我网上查了一下,fscanf 是将文本中的值整理成需要的格式。FFT()函数是一种算法的函数,我的问题就是如何把这个数组
input整理成代码要求的格式。
在调试时看到xreal数值的格式大概是
【1】-1.111317

【2】-1.234257

请高手指教,在线急等,谢谢各位了!
...全文
927 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 tian_wen 的回复:]
楼主看下9楼的代码。看到zhao4zhong1贴的代码,你就可以直接拿去用了。那可是专家
[/Quote]
偶被拍的不能再比这更舒服了。唉,人性的弱点啊!(^_^)
tian_wen 2012-03-07
  • 打赏
  • 举报
回复
楼主看下9楼的代码。看到zhao4zhong1贴的代码,你就可以直接拿去用了。那可是专家
hl_cx 2012-03-07
  • 打赏
  • 举报
回复
再补充一下,input是个float[]数组,6楼给的代码是转换成char的,应该如何改一下,请告诉我好吗?
赵4老师 2012-03-07
  • 打赏
  • 举报
回复
CString strAllData="-1.111317 -1.234257 -0.866633 -0.549730";
char input[1000];
int i,n,r;
double xreal[256],ximag[256];
char *p;

sprintf(input,"%s",strAllData);
p=input;
i = 0;
while (1) {
r=sscanf(p, "%f%f%n", xreal + i, ximag + i,&n);
if (EOF==r) break;
if (2==r) {
i++;
if (i>=256) break;
p+=n;
}
}
n = i;
printf("n=%d\n",n); // 要求 n 为 2 的整数幂
for (i=0;i<n;i++) {
printf("xreal[%d]==%lg,ximag[%d]==%lg\n",i,xreal[i],i,ximag[i]);
}
FFT (xreal, ximag, n);
hl_cx 2012-03-07
  • 打赏
  • 举报
回复
第二个问题,我需要再描述一下,原来代码是把TXT文本里面的数据读过来,用了fscanf(),现在程序让我改成从数据库里读了,因此fscanf()无法使用了,我应该用什么方法得到我要的数据格式呢?
pengchy 2012-03-07
  • 打赏
  • 举报
回复
fscanf需要改为sscanf
pengchy 2012-03-07
  • 打赏
  • 举报
回复
针对第一个问题,可以使用如下方式:
[code=C/C++]
CString strAllData;
strAllData += strTempFft;
char input[100];
memset( input, '\0', sizeof(input) );
sprintf( input, "%s", strAllData );

对于第二个问题,由于你的数据中的第一个和第二个数是复数的实部,第三个和第四个是复数的虚部,如果直接通过fscanf(input, "%f%f", xreal + i, ximag + i),其存储数据为:
xreal[0] = -1.111317, ximag[0] = -1.234257
xreal[1] = -0.866633, ximag[1] = -0.549730
需要把xreal[1]与ximag[0]交换即可。
fldmxp 2012-03-07
  • 打赏
  • 举报
回复
char *pchar = "12345.56789";
float fl;
sscanf(pchar,"%f",&fl);
fl即为你要的值
fldmxp 2012-03-07
  • 打赏
  • 举报
回复
sscanf
hl_cx 2012-03-07
  • 打赏
  • 举报
回复
第二个问题,就是有了数组以后,怎么转换成我所需要的格式,因为后面的FFT函数是快速傅里叶算法的函数,我看不懂那个函数,只能按代码的要求把变量赋值进去。请高手指教!!!!
hl_cx 2012-03-07
  • 打赏
  • 举报
回复
简单的说,我的第一个问题,就是如何将CString转化为相应的float[]数组
面包大师 2012-03-07
  • 打赏
  • 举报
回复
汗。。。太笨,没看懂

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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