1

这是我的问题,我创建了 char temp[100] 来将数字存储在文件中,这temp_i是当前位置的索引(数字有temp_i数字)

如何将 char 数组 temp 从 0temp_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

如果您在数组中再分配一个插槽并将其分配给“\0”,则可以将字符数组视为 C 样式字符串。

C 风格的字符串打开了一大堆库例程,例如std::strtod可以std::sscanf帮助您。

你也可以std::istringstream用来得到你的双倍。

于 2012-11-25T22:57:52.710 回答
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 回答
0

Atof(ascii to float)几乎完全符合您的要求。

它接受一个指向以空结尾的字符串的指针并返回一个浮点数。

您只需要将所有数字的主字符串切割成每个数字一个字符串,但是使用stringstream之类的东西应该很容易。

于 2012-11-25T23:04:06.207 回答