我们需要解析文件并使用C ++将数据写入excel文件。我做了一个搜索,能够找到一个符合我目的的项目。 http://www.codeproject.com/KB/office/ExcelFormat.aspx
请在下面找到几行代码,以确定错误发生的位置。
typedef std::ctype CT;
CT const& ct = std::_USE(std::locale(), CT);
ct.widen(&str[0], &*str.begin()+str.size(), &ret[0]);
上述函数(例如_USE)似乎与VC ++有关。有人可以让我知道上面的代码到底是做什么的吗?以及如何在本机C ++函数中实现它?
如果需要任何其他信息,请告诉我......
谢谢!
答案 0 :(得分:1)
如果没有进一步的信息,很难回答。无论如何我会尝试
CT const & ct = std::use_facet<CT>( std::locale() );
答案 1 :(得分:1)
简而言之,该段代码根据您的计算机对字符数组的首选项重新格式化字符串。
此行创建包含所述首选项的C语言环境构面。 std :: locale()实际上是指定那些首选项,据我所知,第二个输入指定了_USE函数的输出类型。
std::ctype const& ct = std::_USE(std::locale(), std::ctype);
第二行使用新创建的C语言环境facet将c ++字符串str重新格式化为c样式字符串(char数组)ret。
ct.widen(&str[0], &*str.begin()+str.size(), &ret[0]);
我能想到的最简单的减少方法是:
char ret[str.size()];
strncpy(ret, str.c_str(), str.size());
但是,这会消除所有的语言环境格式,这取决于单词之后发生的情况,可能会或可能不会成为问题。
如果要保留语言环境,那么请尝试查看ctype构造函数,而不是使用_USE函数。具体做法是:
ctype(c_locale cloc, const mask *table, bool del, size_t refs)