我是C ++的新手,我正在尝试编写一个简单的杂货购物应用程序,输入的格式如下:
Item Name
someid expiryDate manufacturerId cost
一个例子是:
洗发 8879 05 04 2015 1010 100.03
我想以这样的方式格式化它: 8879 05/04/2015 1000 $ 100.03 ..... etc
我如何实现这一目标?
我的尝试:
我尝试使用子字符串,然后打破输入,然后输出所需的格式,但我遇到的问题是,例如价格可能是45.00,然后我的方法会失败。
我怎样才能做到这一点?
谢谢
答案 0 :(得分:3)
如果您正在从控制台输入中读取,则可以使用cin和istringstream:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
int id;
int mm,dd,yy;
int manufacturerId;
double price;
string priceString;
char character; // used to read '/' and other symbols
cin >> id >> mm >> character >> dd >> character >> yy >> manufacturerId;
cin >> priceString;
istringstream stream( priceString );
stream >> character >> price;
return 0;
}
注意:如果要为复杂对象(例如日期)创建自己的结构/类以提取信息和子类运算符&gt;&gt;,这是一个很好的方法。对他们来说。
struct date
{
int month;
int day;
int year;
};
istream& operator>>(istream& stream,date& d)
{
char character;
stream >> d.month >> character >> d.day >> character >> d.year;
return stream;
}
然后你可以使用
date d;
cin >> d
阅读更简洁的日期,并使代码保持简单。