检查Writer Function挑战
Check Writer Function challenge
您好,我一直在研究这个函数,它根据数字打印支票上的字母。唯一的问题是我把它变成了一个void,我不知道如何从void-> string转换。要我说基本上是不可能的。简而言之,我如何重写它,使它返回一个字符串。
我的代码如下:
void numALet(string &can)
{
int conNum= atoi(can.c_str());
float conNumF= atof(can.c_str());
//Snippet to find the Cents.
float cen= (int)((conNumF- conNum)* 100);
string basic[20]= { " ", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten",
"Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"},
diez[9]= { "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
if(conNum< 20)
cout<< basic[conNum]<< " and "<< (cen+ 1) << " Cents.";
else if(conNum< 100 && conNum> 19)
{
int num= conNum% 100;
if(num% 10!= 0)
cout<< diez[num/10- 1]<< " "<< basic[num% 10]<< " and "<< (cen+ 1) << " Cents.";
else
cout<< diez[conNum/ 10- 1]<< " and "<< (cen+ 1)<< " Cents.";
}
else if(conNum> 99 && conNum< 1000)
{
int num1= conNum% 1000;
cout<< basic[num1/ 100]<< " "<< "Hundred ";
int num2= conNum% 100;
if(conNum< 20)
cout<< basic[num2]<< " and "<< (cen+ 1) << " Cents.";
else if(num2< 100 && num2> 19)
{
if(num2% 10!= 0)
cout<< diez[num2/ 10- 1]<< " "<< basic[num2% 10]<< " and "<< (cen+ 1) << " Cents.";
else
cout<< diez[num2/ 10- 1]<< " and "<< (cen+ 1) << " Cents.";
}
}
else if(conNum> 999 && conNum< 10000)
{
cout<< basic[conNum/ 1000]<< " "<< "Thousand ";
int num1= conNum% 1000;
cout<< basic[num1/ 100]<< " "<< "Hundred ";
int num2= conNum% 100;
if(conNum< 20)
cout<< basic[num2]<< " and "<< cen << " Cents.";
else if(num2< 100 && num2> 19)
{
if(num2% 10!= 0)
cout<< diez[num2/ 10- 1]<< " "<< basic[num2% 10]<< " and "<< (cen) << " Cents.";
else
cout<< diez[num2/ 10- 1];
}
}
}
输出:九千九百九十九美分。
p。S:当调用cen
时,它出乎意料地返回99,100,这就是我添加+ 1的原因。
谢谢你的帮助。
首先,包括lib:
#include <sstream>
然后实例化std::stringstream:
std::stringstream ss;
将cout<<
替换为ss<<
最后,返回字符串流作为字符串。
return ss.str();
相关文章:
- "error: no matching function for call to"构造函数错误
- 调用专用模板时出错"no matching function for call to [...]"
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- Confusion: decltype vs std::function
- 为什么 std::function 可以作为 std::not2 的参数?
- 'max'匹配'std::function<const int &(const int &, const int &)>'无过载
- 传递给std::function template的template参数究竟代表什么
- 将带有unique_ptr的可变 lambda 传递给 const&std::function
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- "no matching function for call to 'Vector::Vector'"错误
- 你能帮我解决删除数组 c++ 中重复值的挑战吗?
- 如何在向量中删除 std::function<void()>?
- 不断"Attempting to reference a deleted function"
- 将函数包装器转换为 std::function
- 类型擦除的std::function与虚拟函数调用的开销
- C++ std::function 对于类 exept 的所有实例都是空的(只有 Visual2019 编译器问题)
- 如果模板没有可变参数,则 Lambda 被推导出为 std::function
- 我在 ifstream input_file(文件名)行中收到错误"no matching function to call";
- 模板规范获取'Ambiguous call to overloaded function'
- 检查Writer Function挑战