求教C++中将字符串转换为数组的方法
小弟现在有个疑问,描述如下:
我定义了一个变量,并且通过算法得到了值,代码如下:
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
请高手指教,在线急等,谢谢各位了!
[解决办法]
char *pchar = "12345.56789";
float fl;
sscanf(pchar,"%f",&fl);
fl即为你要的值
[解决办法]
针对第一个问题,可以使用如下方式:
[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]交换即可。
[解决办法]
- C/C++ code
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); 