操作输出c ++

时间:2015-10-12 19:18:53

标签: c++

我是C ++的新手,我正在尝试编写一个简单的杂货购物应用程序,输入的格式如下:

Item Name
someid expiryDate manufacturerId cost

一个例子是:

洗发 8879 05 04 2015 1010 100.03

我想以这样的方式格式化它: 8879 05/04/2015 1000 $ 100.03 ..... etc

我如何实现这一目标?

我的尝试:

我尝试使用子字符串,然后打破输入,然后输出所需的格式,但我遇到的问题是,例如价格可能是45.00,然后我的方法会失败。

我怎样才能做到这一点?

谢谢

1 个答案:

答案 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

阅读更简洁的日期,并使代码保持简单。