■ファイル入出力のサンプルソース


#include <fstream>
#include <string>
#include <iostream>
#include <stdio.h>

using namespace std;
int main()
{
    string line,file_name_cas,file_name_msh;
    string temp_str;
    int i,i_max;
    cout << "casファイル:";
    cin >> file_name_cas;
    i_max=file_name_cas.length();
    for(i=0;i<=i_max;i++){
        if(file_name_cas.substr( i, 1 )=="."){
            file_name_msh+=file_name_cas.substr( i, 1 )+"msh";
        break;
        }
        file_name_msh+=file_name_cas.substr( i, 1 );
    }
    ifstream ifs(file_name_cas.c_str());//ファイル名引数はchar型で入力

    if(!ifs.is_open()){
        cout << file_name_cas << "が存在しません。";
        //system("pause");

        return 0;
    }
    ofstream ofs(file_name_msh.c_str());//ファイル名引数はchar型で入力
    ofstream ofs_node( "node" );
    ofstream ofs_face( "face" );
    ofstream ofs_cell( "cell" );
    ofstream ofs_zone( "zone" );

    ofs << "(0 Dimension)" << endl << "(2 3)" << endl;

    while (!ifs.eof()) {
         getline(ifs, line);
         temp_str=line.substr( 0, 3 );

         //------node書き込み
         if(line.substr( 0, 3 )=="(10"){
             if(line.substr( 0, 6 )=="(10 (0"){
                 ofs_node << line << endl;
             }
             else{
                 while (line.substr( 0, 2 )!="))"){
                     ofs_node << line << endl;
                     getline(ifs, line);
                     if(line.substr( 0, 2 )=="))"){
                         ofs_node << line << endl;
                     }
                 }
             }
          }
        //------cell書き込み
        else if(line.substr( 0, 3 )=="(12"){
            if(line.substr( 0, 6 )=="(12 (0"){
                ofs_cell << line << endl;
            }
            else{
                while (line.substr( 0, 3 )!="(45"){
                    ofs_cell << line << endl;
                    getline(ifs, line);
                    //------zone書き込み
                    if(line.substr( 0, 3 )=="(45"){
                        ofs_zone << line << endl;
                    }
                }
            }
         }
        //------face書き込み
        else if(line.substr( 0, 3 )=="(13"){
            if(line.substr( 0, 6 )=="(13 (0"){
                ofs_face << line << endl;
            }
            else{
                while (line.substr( 0, 3 )!="(45"){
                    ofs_face << line << endl;
                    getline(ifs, line);
                    //------zone書き込み
                    if(line.substr( 0, 3 )=="(45"){
                        ofs_zone << line << endl;
                    }
                }
            }
         }
         //----------------------------------
     }
     //------一時ファイルクローズ
     ifs.close();
     ofs_node.close();
     ofs_face.close();
     ofs_cell.close();
     ofs_zone.close();

     //--------------------------------------------------
     //  ファイルの結合
     //--------------------------------------------------
     ifstream ifs_node( "node" );
     ifstream ifs_face( "face" );
     ifstream ifs_cell( "cell" );
     ifstream ifs_zone( "zone" );

     ofs << ifs_node.rdbuf() << endl;
     ofs << ifs_face.rdbuf() << endl;
     ofs << ifs_cell.rdbuf() << endl;
     ofs << ifs_zone.rdbuf() << endl;

     //------一時ファイルクローズ
     ofs.close();
     ifs_node.close();
     ifs_face.close();
     ifs_cell.close();
     ifs_zone.close();
     //------一時ファイル削除
     remove("node");
     remove("face");
     remove("cell");
     remove("zone");

     //system("pause");
     return 0;
}

タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

Menu

ここは自由に編集できるエリアです。

Menu

ここは自由に編集できるエリアです。

管理人/副管理人のみ編集できます