//DISPLAY 6.2 File I/O with Checks on open
//Reads three numbers from the file infile.dat, sums the numbers,
//and writes the sum to the file outfile.dat.
#include
#include
#include
#include
#include
#include
#include
#define NO_WIN32_LEAN_AND_MEAN
#include
using namespace std;
CString GetSavePath();
int main()
{
GetSavePath();
CString x;
x = GetSavePath();
cout << x << endl;
ifstream in_stream;
ofstream out_stream;
in_stream.open("x//.txt");
if (in_stream.fail())
{
cout << "Input file opening failed.\n";
exit(1);
}
out_stream.open("x//.txt", ios::app);
if (out_stream.fail())
{
cout << "Output file opening failed.\n";
exit(1);
}
int first, second, third;
in_stream >> first >> second >> third;
out_stream << "The sum of the first 3\n"
<< "numbers in infile.dat\n"
<< "is " << (first + second + third)
<< endl;
in_stream.close();
out_stream.close();
return 0;
}
CString GetSavePath()
{
CString strpath;
TCHAR Buffer[MAX_PATH];
BROWSEINFO bi;
ZeroMemory(&bi, sizeof(BROWSEINFO));
bi.hwndOwner = NULL;
bi.ulFlags = BIF_RETURNONLYFSDIRS; //要求返回文件系统的目
bi.ulFlags = BIF_NEWDIALOGSTYLE; //窗口可以调整大小,有新建文件夹按钮
bi.pszDisplayName = Buffer; //此参数如为NULL则不能显示对话框
bi.lpszTitle = _T("请选择文件夹");
bi.lpfn = NULL;
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框
if (pIDList)
{
SHGetPathFromIDList(pIDList, Buffer);
//取得文件夹路径到Buffer里
strpath.Format(_T("%s"), Buffer);
}
else
{
strpath = _T(""); // 用户点了取消
}
LPMALLOC lpMalloc;
if (FAILED(SHGetMalloc(&lpMalloc)))
strpath = _T("");
//释放内存
lpMalloc->Free(pIDList);
lpMalloc->Release();
return strpath;
}