プログラマーの卵の日記

備忘録になってます!小難しそうなことから超簡単なことまでやってます!!

【C++】ファイルの入力出力したい

前に記事書いたような気もするけどもう記憶から抹消されてるし書いてないと思って書こうと思ってる次第です。


構成


No.1 補足的な話
No.2 インクルードしてるやーつ
No.3 cppでどんなの作ってるか







                No.1 補足的な話


 完ぺきではない。というのもこのプロジェクトに会う形で作ったものをとりあえず乗っけている感じです。





                No.2 インクルードしてるやーつ


 インクルードとしてはこれらをしていますね。


#include <string>
#include <vector>
#include <fstream>
#include <sstream>
#include <iostream>

iostreamは単純にエラー時にcerrを使っているだけなので要らないっちゃいらないですね。
vectorも配列に使っているだけなのでListがいいとかmapがいいとかあればそっちにすればいいと思います。





                No.3 cppでどんなの作ってるか


 なんかめんどくさいのでそのままコピペしてみた。


#include "FileReadWrite.hpp"




/// ----------------------------------------------------------------------------------------------
namespace FRW
{
	/// ----------------------------------------------------------------------------------------------
	std::vector<std::vector<std::string>> FileReaderWrite::m_mapdata;



	/// ----------------------------------------------------------------------------------------------
	void FileReaderWrite::Init()
	{
		std::vector<std::vector<std::string>>().swap(m_mapdata);
	}



	/// ----------------------------------------------------------------------------------------------
	bool FileReaderWrite::FileCSVRead(const std::string t_file)
	{
		std::ifstream writeFile(t_file);

		// マップデータ読み込み失敗
		if (writeFile.fail())
		{
			return false;
		}


		// 仮置き
		std::string str;
		int count = 0;
		int arrayCount = 0;

		while (getline(writeFile, str))
		{
			// 仮置き
			std::string token;
			std::istringstream stream(str);

			// メモリ確保
			m_mapdata.resize(++count);
			arrayCount = count - 1;

			while (getline(stream, token, ','))
			{
				m_mapdata[arrayCount].push_back(token);
			}
		}


		// ファイルを閉じる
		writeFile.close();


		return true;
	}



	/// ----------------------------------------------------------------------------------------------
	const std::vector<std::vector<std::string>>& FileReaderWrite::GetMapData()
	{
		return m_mapdata;
	}



	/// ----------------------------------------------------------------------------------------------
	bool FileReaderWrite::FileCSVWrite(const std::string t_file, const std::vector<std::vector<std::string>>& t_data)
	{
		// ファイルを読み込む
		std::ofstream saveFile(t_file);

		// ファイル読み込み失敗
		if (saveFile.fail())
		{
			std::cerr << "LoadError" << std::endl;
			return false;
		}


		for (int i = 0; i != t_data.size(); ++i)
		{
			for (int j = 0; j != t_data[i].size(); ++j)
			{
				if (j == t_data[i].size() - 1)
				{
					saveFile << t_data[i][j] << std::endl;
				}
				else
				{
					saveFile << t_data[i][j] << ",";
				}
			}
		}


		// ファイルを閉じる
		saveFile.close();


		return true;
	}
}



 まぁ見ればわかると思いますが、csv用にしていますし、vectorでやってます。それが慣れているというだけです。
説明は…読めばわかると思う。