【发布时间】:2013-07-27 23:15:08
【问题描述】:
我写了以下代码在int main()进行测试
int main() {
int *p1 = findmatrixsize("inputmatrix.txt","A");//A function gets matrix size
cout << p1[0] << endl << p1[1] << endl;
int *p2 = findmatrixsize("inputmatrix.txt","B");
cout << p2[0] << endl << p2[1] << endl;
double **C = normalmultiplication("inputmatrix.txt","A", "B");
cout << C[0][0] << endl;
ofstream fout;
const string s="outputmatrix.txt";
fout.open(s);
for(int i=0;i<p1[0];i++){
for(int j =0;j<p2[1];j++){
fout << C[i][j] << " ";
}
fout<< endl;
}
fout.close();
return 0;
}
除了执行多阵列打印外,一切正常。问题来了:
1.如果我注释掉打印部分,p1[0],p1[1],p2[0],p2[1],C[i][j] 会给我想要的完美和正确的结果。
2.但是,当我使用普通循环打印时,它不起作用。但是,但是,但是,如果我将 for 循环中的 p1[0],p2[1] 更改为像 3 这样的具体数字(当我的矩阵维度为 3 时),它会再次起作用。
3.可以编译,但是for循环打印部分没有写入txt。当我将其更改为标准打印 cout(不仅是单行,我指的是整个方法)时,我也无法在终端中看到它们。但是正如我上面提到的,当我将 p[0] p[1] 更改为 3 时,它可以工作,这意味着我可以在 txt 或终端中看到它们
我以前在C++中从来没有遇到过这种奇怪的情况,所以希望有人能帮助我!
仅供参考,我使用 Visual Studio 2010 作为编译器。
感谢您的帮助!
【问题讨论】:
-
究竟是什么不起作用?
-
可以编译,但是for循环打印部分没有写入txt。当我将其更改为标准打印 cout 时(不仅是单行,我的意思是整个方法),我也无法在终端中看到它们。但是正如我上面提到的,当我将 p[0] p[1] 更改为 3 时,它可以工作,这意味着我可以在 txt 或终端中看到它们
标签: c++ visual-studio-2010 for-loop printing fileoutputstream