使用C ++向Excel文件写入问题

时间:2009-12-31 11:59:31

标签: c++ excel

我们需要解析文件并使用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 ++函数中实现它?

如果需要任何其他信息,请告诉我......

谢谢!

2 个答案:

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