这是我的问题,我创建了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);
}
}
答案 0 :(得分:2)
如果在阵列中再分配了一个插槽并将其分配给'\ 0',则可以将字符数组视为C样式字符串。
C风格的字符串打开了一大堆库例程,例如std::strtod
和std::sscanf
,它们可以为您提供帮助。
你也可以使用std::istringstream
来获得双倍。
答案 1 :(得分:0)
Atof(ascii to float)几乎完全符合您的要求。
它接受一个指向空结束字符串的指针并返回一个浮点数。
您只需将所有数字的主字符串剪切为每个数字一个字符串,但使用stringstream之类的字符串应该非常简单。
答案 2 :(得分:0)
使用sstream。
#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