gpt4 book ai didi

c++ - facet 的 get_time 一直失败

转载 作者:搜寻专家 更新时间:2023-10-31 01:21:22 24 4
gpt4 key购买 nike

我在这个例子中花了很多时间,每次我得到错误 Unable to read cin with an ios_base::iostate equal to failbit 来自这段代码:

#include "dates.h"

#include <iostream>
#include <ctime>
#include <locale>
#include <sstream>
#include <iterator>

using namespace std;

void trasnlateDate(istream&in, ostream&out){
const time_get<char>& dateReader = use_facet<time_get<char> >(in.getloc());
ios_base::iostate state = static_cast<ios_base::iostate>(0);
istreambuf_iterator<char> end;

tm t;

dateReader.get_date(in, end, in, state, &t);

if(state == static_cast<ios_base::iostate>(0) || state == ios_base::eofbit){
const time_put<char>& dateWriter = use_facet<time_put<char> >(out.getloc());
char fmt[] = "%x";
if(dateWriter.put(out, out, out.fill(), &t, &fmt[0], &fmt[2]).failed())
cerr << "unable to write to output stream.\n";
}else{
cerr << "Unable to read cin.\n";
}
}

int main(){
locale::global(locale(""));
cin.imbue(locale("en_US.utf8"));
cout.imbue(locale("de_DE.utf8"));
trasnlateDate(cin, cout);
}

一如既往,Ubuntu 10.4 x64 中的 gcc 4.4.3

最佳答案

我在一个盒子上运行了你的示例代码,直到我输入了 02/02/2005,它就像你说的那样失败了。

看起来月份和日期字段中的那些前导零是必需的。

关于c++ - facet 的 get_time 一直失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3857897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com