这是一个项目,这只是我整个计划的一部分。
我收到的信息格式为:
200707211245 F70.5
空格前的数字是YYYYMMDDTTTT
T=time
,我必须以下列格式输出到新文件:
21.38 C ---于2007年7月21日12:45录制
这是一个相当简单的过程,但我无法弄清楚如何将前7个数字更改为一个整数,我可以传递给一个函数来正确格式化日期和时间。我正在使用Visual Studio 2013。
随后这就是我所能做到的。任何和所有的帮助将不胜感激。我在代码的.c_str()
部分收到错误。
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
ifstream inFile;
inFile.open("inputData.txt", ios::in);
ofstream oFile;
oFile.open("results.dat", ios::out);
int date = atoi(inFile.c_str());
return 0;
}
int getDate(int date)
{
}
答案 0 :(得分:0)
首先注意一些事项:
atoi
返回int
值,您的号码200707211245
有12位数(int范围为–2,147,483,648 to 2,147,483,647
, 最多十位数 ),你的号码不适合类型范围,你会得到奇怪的结果。boost
lexical_cast
以下是一个例子:
#include <iostream>
#include <fstream>
#include <boost/lexical_cast.hpp>
using namespace std;
int get_date(long long date) {
std::cout << date << std::endl;
return date;
}
int main()
{
ifstream in_file("H:\\save.txt", ios::in);
if (!in_file.is_open())
return -1;
std::string date_str;
in_file >> date_str;
int date1 = atoi(date_str.c_str()); // would overflow
long long date2 = boost::lexical_cast<long long>(date_str);
get_date(date2);
return 0;
}
预期产出:
200707211245
答案 1 :(得分:0)
解决此问题的最简单方法是将字符串输入解析为Y,M,D,H,M和temp的单独字符串。读取一行输入并将其分成几部分。你可能不想在课堂上使用Boost。只需在标准库中使用std :: string和字符串操作。
然后你可以将这些小字符串转换成小整数,或者只是将它们盲目地重新格式化为输出。
温度字符串必须转换为double才能转换为摄氏度。