3 回答

TA貢獻1783條經驗 獲得超4個贊
假設原字符串為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]里。

TA貢獻1847條經驗 獲得超11個贊
你可以叫 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。

TA貢獻1824條經驗 獲得超8個贊
對于每一個字符,如果是 >='0' && <='9' 就把這個字符 減去 '0' 就能得到相應的數字了..而對于如小數點,加號,減號這些東西只要判斷 =='+' 然后使用原來的舊可以了.具體實現自己做.
- 3 回答
- 0 關注
- 94 瀏覽
添加回答
舉報