猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
内容全是数字形式,怎么把它们转化为一个实数数组?
我用c++从文件中读到一个字符串
"12.32 12 35 25.3 36.366"
精慕HU
浏览 162
回答 3
3回答
慕娘9325324
假设原字符串为s,用两个函数,两个数组a,b;一个函数将字符串里的单个字符转换成0-9这几个数字。将字符逐个读入a数组,遇到“.”则将点之前的数字合并读入b数组,如:a[2]='.',b[1]=a[1]+a[0]*10,然后将a数组清空继续读入“.”后面的数,直到遇到空格,如:a[1]=a[1]+s[3]/10; a[2]=a[1]+s[4]/1e2; 然后将a[2]加到b[1]里。
0
0
0
回首忆惘然
你可以叫 stringstream 和 vector 帮忙。下面的代码里 dbl_array 既是你要创建的实数数组(real 代表你读到的字符串)。#include<vector>#include<string>#include<sstream>using namespace std;int main( ) { string real = "12.32 12 35 25.3 36.366"; stringstream ss( real ); vector< double > vd; // Collect all real numbers. double temp; while( ss >> temp ) vd.push_back( temp ); // Create the array. double *dbl_array = new double[ vd.size( ) ]; for( int i = 0; i < vd.size( ); ++i ) dbl_array[ i ] = vd[ i ];}值得一提的是,vector 可以被当成数组来用,而且它比数组优秀很多,所以你大可去掉上面的代码里多余的最后一段,直接用 vector。
0
0
0
有只小跳蛙
对于每一个字符,如果是 >='0' && <='9' 就把这个字符 减去 '0' 就能得到相应的数字了..而对于如小数点,加号,减号这些东西只要判断 =='+' 然后使用原来的旧可以了.具体实现自己做.
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
C
typedef入门问题
5 回答
C++
typedef入门问题
5 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续