从一行读取hh:mm格式的时间
Reading time in hh:mm format from a line
我有一个由如下行组成的文件:
nameOfFood hh:mm PriceOfFood.
我必须计算11:30到13:30之间每种食物提供的收入。所以输出应该像这样:
nameOfFood1 yielded $$$ between 11:30 and 13:30.
nameOfFood2 yielded $$$ between 11:30 and 13:30.
等等
目前我使用ifstream f
来做这个(名字和时间是字符串,价格是整数):
f >> name >> time >>price;
我的问题是:我如何将时间戳的HH和MM部分读取为单独的(integer
)变量,因此我可以将它们转换为分钟(60*HH+MM)以使它们具有可比性?
输入操作符的工作方式是在流中不再匹配目标的点停止(除了像空格这样的分隔符)。因此,只需将输入流中的小时和分钟作为整数处理,但您还必须吞下冒号字符。
std::istringstream f("name 19:30 234");
std::string name;
int hour;
int minute;
int price;
char c;
f >> name >> hour >> c >> minute >> price;
由于您的输入格式是固定的,您可以这样做:
std::string time = ...;
std::string hours(time, 0, 2); // start at 0, take 2 chars
std::string minutes(time, 3, 2); // start beyond ':', take 2 chars
这利用了std::string
的构造函数接受另一个字符串、位置和字符计数。
我将把实际的整数转换作为练习。
您可以简单地使用c输入法:
scanf("%d:%d",&H,&M);
不要忘记包含stdio.h
相关文章:
- 如何在C++中将 chrono::秒转换为 HH:MM:SS 格式的字符串?
- 如何从远程 SFTP 服务器获取 HH-MM-SS 时间戳格式的文件列表
- 如何在C++中将秒更改为 HH:MM:SS 格式?
- 如何以"hh:mm:ss"格式读取C ++中的HH,MM和SS
- C++ 用户输入的字符串必须采用 DD-MM-YYYY 格式
- 以 hh:mm 格式添加时间,C++
- 正在尝试将time_t数据类型转换为(dd/mm/yyyy)格式C++
- 如何将EPOCH时间转换为时间格式(hh:mm)
- 以mm/dd/yyyy格式输入日期,并将其拆分为3个单独的变量
- 将字符串"DDMMYY HH:MM"的格式设置为"YY-MM-DD HH:MM"
- 将军事时间转换为标准格式(HH:MM)并以标准格式计算平均值.三个问题
- 时间格式 HH:MM:SS 输入
- 将日期格式Www-Mmm-dd hh:mm:ss yyyy转换为c++中的dd hh:mm:ss字符串
- 如何将CFAbsoluteTime转换为YYYY-MM-DD HH:MM:SS格式?
- 两个时间之间经过的时间,格式为24小时hh:mm:ss
- 获取以毫秒为单位的当前时间,或HH:MM:SS:MMM格式
- 如何将boost::gregorian::date转换为mm/dd/yyyy格式,反之亦然
- 如何比较格式的两个时间戳"Month Date hh:mm:ss"以检查 +ve 或 -ve 值
- 从一行读取hh:mm格式的时间
- 在c++中将dd/mm/yyyy格式的日期转换为时间戳(从01/01/1970开始的秒数)