2009年9月23日星期三

[PerlChina] Perl script调用.exe工具的问题。

专业需要的科学计算,需要用一个c++编写的小工具包
这小东西每次只能从命令行读一个文本文件,然后它会判定格式有效与否,最后格式化成一个向量。再进行矩阵运算。

现在问题是需要的计算的数据很多,想每次从命令行传一个字串,然后去格式化再进行计算。但搞了很多次,终究不成功。

当然我可以先生成临时文件夹把每条字串先生成文件再去调用那个工具,处理完后再删掉,但这么做应该是很笨的办法,而且速度肯定会慢许多。有没有比较好的
办法呢?

C++代码如下:
try {
// Check input
Input input(argc,
argv); //提取命令行参数
Ext::FPWrap<Ext::InvalidFile> infile(input.File
()); //判断文件格式有效与否 XXXXXX

// Read in all data
std::vector<T>
x; //向量格

T d;
std::string f = WT::PrintValues::Format(T()) + std::string("\n");
char const* format = f.c_str();
while ( !std::feof(infile) )
{
std::fscanf(infile, format,
&d); //问题出在这里 !!!。。。。。。。
x.push_back(d);
} // while

// Deal with possible reflected boundary
std::size_t outputSize = x.size();
WT::Boundary boundaryType = WT::selectBoundary(input.BoundaryType
());
if ( boundaryType == WT::Reflected ) {
x.resize(2 * outputSize);
for ( std::size_t i = 2 * outputSize - 1, j = 0; i >=
outputSize; )
x[i--] = x[j++];
}


我的想法是把注释 划X的地方去掉,然后直接在那里传递一个字符串变量

然后问题出现在,我没有办法再去格式化这个字串,fscanf的功能,我翻了一下午C++资料,找不到可以替代掉的办法,理论上应该可以用sscanf
去格式化字串后,把它导入x,但是总不成功。
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

没有评论: