如何在vs2010中的MFC应用程序中实现读取文件?急!! 30
假设要读取D盘根目录下的一个TXT文件,文件中有n行,每行m个float型数,之间用空格分开,如何读到一个二维数组里面?如{00.50.50.511.00.50.311....
假设要读取D盘根目录下的一个TXT文件,文件中有n行,每行m个float型数,之间用空格分开,如何读到一个二维数组里面?如{0 0.5 0.5 0.5
1 1.0 0.5 0.3
1 1.5 0.5 0.3} 展开
1 1.0 0.5 0.3
1 1.5 0.5 0.3} 展开
2011-03-30
展开全部
可以在DOC类中响应OnOpenDocument(LPCTSTR lpszPathName)函数,这是MFC自带的打开文件操作,lpszPathName是文件名。不用这个的话也可以用CFileDialog dlg,这是打开文件对话框,具体用法参见MSDN
#include <fstream>
#include <sstream>
BOOL CMySDIDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
double num[n][m]; // 你的数组
ostringstream oss;
oss << lpszPathName;
ifstream in (oss.str().c_str());
if (in.fail())
{
return FALSE;
}
else
{
string line;
string indexString;
int i = 0;
while (true)
{
getline (in, line);
if (in.eof () || in.fail ())
{
break;
}
istringstream is (line);
is >> indexString; // 逐行读取
int j = 0;
while (true)
{
is >> indexString;
if (!(is.fail()))
{
num[i][j] = atof(indexString.c_str()); // 字符串转浮点
j++;
}
else
{
break;
}
}
i++;
}
in.close();
return true;
}
}
#include <fstream>
#include <sstream>
BOOL CMySDIDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
double num[n][m]; // 你的数组
ostringstream oss;
oss << lpszPathName;
ifstream in (oss.str().c_str());
if (in.fail())
{
return FALSE;
}
else
{
string line;
string indexString;
int i = 0;
while (true)
{
getline (in, line);
if (in.eof () || in.fail ())
{
break;
}
istringstream is (line);
is >> indexString; // 逐行读取
int j = 0;
while (true)
{
is >> indexString;
if (!(is.fail()))
{
num[i][j] = atof(indexString.c_str()); // 字符串转浮点
j++;
}
else
{
break;
}
}
i++;
}
in.close();
return true;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream fin;
fin.open("d:\\temp.txt");
float num;
float arr[5][6];
if (!fin.is_open())
cout << "没有打开文件\n";
else
{
for (int i = 0; i < 5; i++)
for (int n = 0; n < 6; n++)
{
fin >> num;
arr[i][n] = num;
}
}
}
这是控制台代码。mfc不会
#include <fstream>
using namespace std;
int main()
{
ifstream fin;
fin.open("d:\\temp.txt");
float num;
float arr[5][6];
if (!fin.is_open())
cout << "没有打开文件\n";
else
{
for (int i = 0; i < 5; i++)
for (int n = 0; n < 6; n++)
{
fin >> num;
arr[i][n] = num;
}
}
}
这是控制台代码。mfc不会
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-04-01
展开全部
10的运行库而已,建议VC2010写的程序都使用MFC静态库的方式进行编译
另外,站长团上有产品团购,便宜有保证
另外,站长团上有产品团购,便宜有保证
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-03-30
展开全部
知不知道m、n的具体数值啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fopen()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询