积木

No sub title

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用链接

留言簿(1)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

// FileOp.cpp : Defines the entry point for the console application.
//

#include 
"stdafx.h"

//要用ifstream与ofstream进行文件的输入与输出操作,必须包含此头文件
#include <fstream>
#include 
<iostream>
#include 
<stdio.h>//FILE需要



int _tmain(int argc, _TCHAR* argv[])
{
    
//技术扶自: http://www.mini188.com/showtopic-954.aspx

/************************************************************************/
/** 输入文件流 ofstream
/***********************************************************************
*/
    
/*
    //声明文件输入的操作对象(输出流对象)
    std::ofstream fout;
    //打开一个文件,提示:如果Output.txt文件不存在,则系统会自动为你创建一个
    fout.open("Output.txt");
    //对文件进行写操作。
    fout << "This is a first line." << "\n";
    fout << "This is a second line." << "\n";
    
    int num = 150;
    char name[] = "John Doe";
    fout << "Here is a number: " << num << "\n";
    fout << "Now here is a string: " << name << "\n";

    //将文件流内容保存到硬盘
    fout.flush();
    //关闭文件流
    fout.close();
    
*/


/************************************************************************/
/** 输入文件流 ifstream  12 GameDev 15.45 L This is really awesome!
/***********************************************************************
*/
    
/*
    std::ifstream fin("Input.txt");
    
    int number;
    float real;
    char letter, word[8];
    fin >> number >> word >> real >> letter;
    char sentence[1000];
    fin.getline(sentence, 1000);

    fin.close();
    
*/


/************************************************************************/
/** 文件流操作 fstream
/***********************************************************************
*/
//     std::fstream fFile;
//     fFile.open("Output.txt", std::ios::in | std::ios::out);
    
//fFile.open("无线iPhone平台开发基础培训交流圈.jpg");    //经测试,非文本文件资源是打不开的。
    
    
//将整个文件的内容读取出来,并显示
    
//注意:用这种方法读出来的,都是忽略空格与换行符的
//     if (fFile.is_open())
//     {
//         char letter;
//         //while (fFile.good() && !fFile.eof())
//         while (!fFile.eof())    //用这个与上面那个都是一样的效果
//         {
//             fFile >> letter;
//             if (fFile.eof())
//                 break;
//             std::cout << letter << std::endl;
//         }
//         getchar();
//     }


    
//注意:用这种方法读限出来的,都是没忽略末尾的换行符的
//     if (fFile.is_open())
//     {
//         char line[2048];    
//         while (fFile.good() && !fFile.eof())
//         {
//             fFile.getline(line, 2048);
//             static int count = 0;
//             if (count < 3)
//             {
//                 count += 1;
//                 fFile.seekg(0, std::ios::beg);    //这个是改变读的指针位置。如果是想改变写的指针位置用fFile.seekp(0, std::ios::beg/end);
//             }
//             std::cout << line << std::endl;
//         }
// 
//         //将第一行的字符串改:"The first line string is changed."
//         fFile.seekp(0, std::ios::beg);
//         //fFile << "The first line string is changed.";    //写内容不是这样写的。如果是ofstream可以这么写。但对于fstream需要用下面的方法来写。测试结果发现,仍是写不进去
//         //char* pszTempForWrite = "The first line string is changed.";
//         //fFile.write(pszTempForWrite, strlen(pszTempForWrite));
//         fFile.seekg(0, std::ios::beg);
//         fFile.getline(line, 2048);
//         std::cout << line << std::endl;
//         getchar();
//     }

//     //* fstream的其他一些方法
//     //read方法
//     char* pszOutputFileText = NULL;
//     fFile.seekg(0, std::ios::end);
//     int nSize;
//     nSize = fFile.tellg();
//     //std::cout << fFile.tellg() << std::endl;
//     //用read方法一次性将整文件给读取出来(注意:这些读出来后,末性居然会带了一个乱码。这个郁闷。)
//     pszOutputFileText = new char[nSize + 1];
//     fFile.seekg(0, std::ios::beg);
//     fFile.read(pszOutputFileText, nSize);
//     pszOutputFileText[nSize] = '\0';
//     std::cout << pszOutputFileText << std::endl;
//     delete [] pszOutputFileText;
//     getchar();
// 
//     fFile.close();


/************************************************************************/
/** 二进制文件的读写
/***********************************************************************
*/


/************************************************************************/
/** 字符串长度
/***********************************************************************
*/
//     char* pszString = "Hello";
//     std::cout << strlen(pszString) << std::endl;    //输出5
// 
//     std::string sString = "Hello";
//     std::cout << strlen(sString.c_str()) << std::endl;//输出5
// 
//     char szTest[5] = { 'H', 'e', 'l', 'l', 'o' };
//     std::cout << szTest[5] << std::endl;    //越界了,所以会报。
//     getchar();


/************************************************************************/
/** 使用FILE类对文件进行操作 (FILE在stdio.h中
/***********************************************************************
*/
    FILE
* materialFile = fopen("DefaultObjectStd.material""r");
    
if (materialFile == NULL)
    {
        std::cout 
<< "Open the file \"DefaultObjectStd.material\" failure." << std::endl;
        
return 0;
    }

    
const int MAX_COUNT =2048;
    
char everyline[MAX_COUNT] = { '\0' };
    
while (fgets(everyline, MAX_COUNT, materialFile))
    {
        std::cout 
<< everyline;    //注意:通过fgets()函数读取出来的定符串,末尾是带有换行符的。这与上面的是不一样的。
    }

    
//取得文件的长度(即:文件的大小)
    int nMaterialFileSize;
    fseek(materialFile, 
0, SEEK_END);
    nMaterialFileSize 
= ftell(materialFile);
    std::cout 
<< std::endl << nMaterialFileSize << std::endl;
    
    getchar();

    fclose(materialFile);
    

    
return 0;
}
posted on 2011-06-27 18:21 Jacc.Kim 阅读(807) 评论(0)  编辑 收藏 引用 所属分类: VC / C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理