亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ch字符串可以正常輸出,為什么我的_atold庫函數用不成?

ch字符串可以正常輸出,為什么我的_atold庫函數用不成?

C++
梵蒂岡之花 2023-04-22 23:19:02
做以一個程序要把輸入的形如$123,456,789.99(金融類型)的字符串轉換成long double型#include <iostream>#include <STDLIB.h>#include <math.h>#include <string>using namespace std;long double mstold(string);int main(){string s1;cout<<"\nEnter the string: "<<endl;getline(cin,s1);mstold(s1);return 0;}long double mstold(string s1){long double c;char ch[100];int a,b;s1.erase(0,1);for(;;){ a=s1.find(",");if(a != -1)s1.erase(a,1);elsebreak;}b=s1.length();s1.copy(ch, b, 0);ch[b]=0; return c=_atold(ch);}此程序調試時提示error C2065: '_atold' : undeclared identifier,ch字符串可以正常輸出,為什么我的_atold庫函數用不成呢?
查看完整描述

2 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

不知道你是不是想要這樣的程序,能將“123,456,789.99”字符串轉換成123456789.99的double類型,至于long doubleC++中沒有從string轉換long double的函數,atof可以從cstr轉換成double:
#include <iostream>
#include <cstring>
#include <string>
#include <iomanip>

using namespace std;

int main ()
{
double transformer(string&);
string money_s("123,456,78.99");
double modey_d(transformer(money_s));
cout << setprecision(10) << modey_d << endl;
}

double transformer(string& s)
{
while(s.find(",") != string::npos) {
s.erase(s.find(","), 1);
}
return atof(s.c_str());
}

出出結果為:12345678.99

查看完整回答
反對 回復 2023-04-25
?
www說

TA貢獻1775條經驗 獲得超8個贊

標準庫里沒有 _atold 函數。
如果你已把逗號和$ 濾掉,你用 
long double c; 
char ch[100]; 
sscanf(ch,"%lf",&c); 
就轉換成 double 了。

查看完整回答
反對 回復 2023-04-25
  • 2 回答
  • 0 關注
  • 205 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號