1

これが私の質問です。数値をファイルに保存するためにchar temp [100]を作成しました。これtemp_iは現在の位置のインデックスです(数値には数字がありtemp_iます)

char配列tempを0から作成temp_iしたものに変換する方法valueは?

どんな体でも私を助けることができますか?

stack<int> first;
char temp[10]={'0','0','0','0','0','0','0','0','0','0'};
int temp_i = 0;
bool isDouble = false;
for(int index = 0; index< strlen(str); index++){
    if(str[index] != ' '){
      temp[temp_i++] = str[index];
    } 
    else if(str[index] == '.') {
      isDouble = true;
     } else {
       double value = *(double*)temp;
       cout<<value<<endl;
       first.push(value);
      }
}
4

3 に答える 3

2

配列にもう 1 つのスロットを割り当てて '\0' に割り当てた場合、文字配列を C スタイルの文字列として扱うことができます。

C スタイルの文字列により、 や などのライブラリ ルーチンが多数利用できるようにstd::strtodなりstd::sscanfます。

std::istringstreamダブルを取得するために 使用することもできます。

于 2012-11-25T22:57:52.710 に答える
0

Atof(ascii to float)は、あなたがやろうとしていることをほぼ正確に実行します。

nullで終了する文字列へのポインタを取り、floatを返します。

すべての数字を含むメインの文字列を数字ごとに1つの文字列にカットする必要がありますが、stringstreamのようなものを使用すると非常に簡単になります。

于 2012-11-25T23:04:06.207 に答える
0

ストリームを使用します。

#include<sstream>
#include<iostream>
using namespace std;

int main()
{
    char * str = "123.4567 813.333   999.11";
    stringstream converter;

    converter<<str<<str<<str;


    double number0;
    double number1;
    double number2;

    converter>>number0;
    cout<<number0<<endl;

    converter>>number1;
    cout<<number1<<endl;

    converter>>number2;
    cout<<number2<<endl;


    cin.ignore('\n', 100000);

    return 0;
}

戻り値 :

123.4567
813.333
999.11
于 2012-11-25T23:21:10.910 に答える