关于输出文件的问题

neverzhang 2007-04-22 10:32:34
下面的代码是别人写的类中的一个函数
我在调试时,希望能够看到某些变量 的值的变化
于是设置了输出文件,out1,out2
希望将变量值输出到这些文件中,
但是为什么运行玩整个系统后,却只生成了目标文件
但是却没有结果数据了
注:系统有多个类,CCorpStructInterpolate类只是其中的一个
由于数据结构相当复杂,所以就没有贴原代码
只贴了相关部分。
十分感谢
void CCorpStructInterpolate::GetNearProbAll(LONG lFirstTagNo, LONG lSecondTagNo, double *pdProb)
{
....省略部分

if ((lFirstTagNo == 0) && (lSecondTagNo == 0))
{
....省略部分
for (i = 1; i < WORDSCOUNT; i++)
pdProb[i] = LogAdd(dTemp1, dTemp2 + m_pStatData[i].fProb);

if (iPos1 != -1) {
....省略部分
for (i = 1; i < j; i++)
pdProb[plTemp[i]] = LogAdd(pdProb[plTemp[i]], m_fCoffTrigram3 + pfTemp[i]);
}
....省略部分
for (i = 1; i < j; i++)
pdProb[plTemp[i]] = LogAdd(pdProb[plTemp[i]], dTemp1 + pfTemp[i]);
for (i = 0; i < WORDSCOUNT; i++)
{
pdProb[i] = exp(pdProb[i]);
out2<<log(pdProb[i])<<' ';
}
return;
}
....省略部分
pdProb[i] = LogAdd(dTemp1, dTemp2 + m_pStatData[i].fProb);
....省略部分

for (i = 0; i < WORDSCOUNT; i++)
{
pdProb[i] = exp(pdProb[i]);
out1<<log(pdProb[i])<<' ';
}
}
...全文
193 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kavinwell 2007-12-07
  • 打赏
  • 举报
回复
给楼主提个小小的建议,发代码时最好用“插入源代码”这个功能,这样其他人看起来会舒服一点,^-^
luojingpo 2007-12-07
  • 打赏
  • 举报
回复
代码用这样的标准方式输出把,看不清楚,太乱了!

int i;
int j;

要不没有办法看啊!
Muf 2007-12-07
  • 打赏
  • 举报
回复
你可以将你贴出来的函数的第一行开始断点,然后一行一行跟下去。
Muf 2007-12-07
  • 打赏
  • 举报
回复
我估计一下可能有几个原因:
1. WORDSCOUNT 的值被定义成0了
2. out1<< ... 这类的语句根本没有执行到。具体原因自已找。
3. out1和out2没关闭。
neverzhang 2007-04-22
  • 打赏
  • 举报
回复

后来我尝试着在某些变量出设置断点(比如在顶楼所贴代码中,out1以及out2的地方)
系统却并没有在断点处停留,而是直接运行全系统
直至系统运行结束
什么原因捏?
neverzhang 2007-04-22
  • 打赏
  • 举报
回复

void CCorpStructInterpolate::GetNearProbAll(LONG lFirstTagNo, LONG lSecondTagNo, double *pdProb)//从内存中读出
{
int iPos1;
int i, j;
double dTemp1, dTemp2;
float *pfTemp;
PLONG plTemp;

static int iLastPos = -1;
static LONG lLastSecondTag = -1;

if (lFirstTagNo>FUHAO) lFirstTagNo=1;
if (lSecondTagNo>FUHAO) lSecondTagNo=1;

iPos1 = FindPos(m_pStatData[lFirstTagNo].plFirstTagNo, m_pStatData[lFirstTagNo].lNBinGrp, lSecondTagNo);

if ((iPos1 == iLastPos) && (lLastSecondTag == lSecondTagNo))
return;
iLastPos = iPos1;
lLastSecondTag = lSecondTagNo;

if ((lFirstTagNo == 0) && (lSecondTagNo == 0))
{
pdProb[0] = -1e+300;
dTemp1 = m_fCoff0gram3 + log((double)1 / m_nMaxTagNum);
dTemp2 = m_fCoffUnigram3 - log(1 - exp(m_pStatData[0].fProb));
for (i = 1; i < WORDSCOUNT; i++)
pdProb[i] = LogAdd(dTemp1, dTemp2 + m_pStatData[i].fProb);
if (iPos1 != -1) {
j = m_pStatData[lFirstTagNo].plNTriGrp[iPos1 + 1] - m_pStatData[lFirstTagNo].plNTriGrp[iPos1];
plTemp = &m_pStatData[lFirstTagNo].plSecondTagNo[m_pStatData[lFirstTagNo].plNTriGrp[iPos1]];
pfTemp = &m_pStatData[lFirstTagNo].pfTriProb[m_pStatData[lFirstTagNo].plNTriGrp[iPos1]];
for (i = 1; i < j; i++)
pdProb[plTemp[i]] = LogAdd(pdProb[plTemp[i]], m_fCoffTrigram3 + pfTemp[i]); }
j = m_pStatData[lSecondTagNo].lNBinGrp;
plTemp = m_pStatData[lSecondTagNo].plFirstTagNo;
pfTemp = m_pStatData[lSecondTagNo].pfBinProb;
dTemp1 = m_fCoffBigram3 - log(1 - exp(m_pStatData[0].pfBinProb[0]));
for (i = 1; i < j; i++)
pdProb[plTemp[i]] = LogAdd(pdProb[plTemp[i]], dTemp1 + pfTemp[i]); //trigram

for (i = 0; i < WORDSCOUNT; i++)
{
pdProb[i] = exp(pdProb[i]);
out2<<log(pdProb[i])<<' ';
}
return;
}

double fCoffUnigram, fCoffBigram, fCoffTrigram, fCoff0gram;
if (iPos1 != -1)
{
fCoffUnigram = m_fCoffUnigram3;
fCoffBigram = m_fCoffBigram3;
fCoffTrigram = m_fCoffTrigram3;
fCoff0gram = m_fCoff0gram3;
}
else
if (m_pStatData[lSecondTagNo].lNBinGrp > 0)
{
fCoffUnigram = m_fCoffUnigram2;
fCoffBigram = m_fCoffBigram2;
fCoff0gram = m_fCoff0gram2;
}
else
{
fCoffUnigram = m_fCoffUnigram1;
fCoff0gram = m_fCoff0gram1;
}

dTemp1 = fCoff0gram + log((double)1 / m_nMaxTagNum);
dTemp2 = fCoffUnigram;
for (i = 0; i < WORDSCOUNT; i++)
pdProb[i] = LogAdd(dTemp1, dTemp2 + m_pStatData[i].fProb);
if (iPos1 != -1) {
j = m_pStatData[lFirstTagNo].plNTriGrp[iPos1 + 1] - m_pStatData[lFirstTagNo].plNTriGrp[iPos1];
plTemp = &m_pStatData[lFirstTagNo].plSecondTagNo[m_pStatData[lFirstTagNo].plNTriGrp[iPos1]];
pfTemp = &m_pStatData[lFirstTagNo].pfTriProb[m_pStatData[lFirstTagNo].plNTriGrp[iPos1]];
for (i = 0; i < j; i++)
pdProb[plTemp[i]] = LogAdd(pdProb[plTemp[i]], fCoffTrigram + pfTemp[i]);
}
j = m_pStatData[lSecondTagNo].lNBinGrp;
plTemp = m_pStatData[lSecondTagNo].plFirstTagNo;
pfTemp = m_pStatData[lSecondTagNo].pfBinProb;
for (i = 0; i < j; i++)
pdProb[plTemp[i]] = LogAdd(pdProb[plTemp[i]], fCoffBigram + pfTemp[i]);
for (i = 0; i < WORDSCOUNT; i++)
{
pdProb[i] = exp(pdProb[i]);
out1<<log(pdProb[i])<<' ';
}


}

还是把原代码贴出来,数据结构很复杂,而且涉及到其他类申明,所以不太好注数
就当是为顶楼的代码做对照吧
谢谢

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧