ご回答ありがとうございます(^ ^)
おっしゃるとおりのコードに直したら表示されました。
おかげさまで原因も分かりました。
原因は、私が
(1)std::vectorの使い方を間違っていたこと
×:コンストラクタ引数を与えると初期容量が決まる
〇:コンストラクタ引数を与えると空要素ができる
(2)lineBufSizeの意味を取り違えていたこと
×:行数を指定する
〇:1行当たりの最大サイズを指定する
の2点でした。。。
お騒がせしてしまいすみません。
解決とさせていただきますm(_ _m
下記に修正後コードを記載しておきます。
(追記モード⇒上書きモードに変えました)
◆コード
#include <DxLib.h>
#include <string>
#include <vector>
#include <fstream>
const int SCREEN_X = 480;
const int SCREEN_Y = 800;
const int COLOR_DIPS = 16;
// テキストファイルを保存します
bool SaveText(const std::string& filePath, const std::vector<std::string>& in_textList)
{
// outputストリームの生成
std::ofstream ofs;
// 上書きモード
ofs.open(filePath.c_str(), std::ios::out | std::ios::ate);
// outputストリームがOPENできなかったらfalseを返す
if (ofs.is_open() == false)
{
return false;
}
else
{
// 全行をストリームに出力
for (std::vector<std::string>::const_iterator fr = in_textList.begin(), to = in_textList.end(); fr != to; ++fr)
{
ofs << (*fr) << std::endl;
}
// エラーが発生したり失敗したらfalseを返す
bool isSuccess = (ofs.bad() == false && ofs.fail() == false);
// outputストリームを閉じる
ofs.close();
return isSuccess;
}
}
// テキストファイルをロードします
bool LoadText(const std::string& filePath, std::vector<std::string>& out_textList, const unsigned int& lineBufSize)
{
// 戻り値をクリア
out_textList.clear();
//--------------------------
// 1.ファイルOPEN
//--------------------------
const int fileHandle = DxLib::FileRead_open(filePath.c_str(), FALSE);
// ファイルOPENに失敗したら直ちに終了する
if (fileHandle == 0)
{
// エラー
DxLib::printfDx("ファイルOpenエラー");
return false;
}
//--------------------------
// 2.ファイル読み取り
//--------------------------
// ファイル1行分のバッファ領域を確保
char *buf = new char[lineBufSize];
// ファイルの終端が来るまでループ
while (DxLib::FileRead_eof(fileHandle) == 0)
{
// 一応念のためウインドウのメッセージを処理を行います
if (DxLib::ProcessMessage() != 0) { return false; }
// 1行読み込み
const int result = DxLib::FileRead_gets(buf, lineBufSize, fileHandle);
// 1行読み込みに失敗したら直ちに終了します
if (result == -1)
{
// エラー
DxLib::printfDx("1行読み込みエラー");
// 忘れずにバッファ破棄
delete[] buf;
return false;
}
// 読み込み行が無くなったら脱出します
if (result == 0)
{
break;
}
// 戻り値に追記する
out_textList.push_back(buf);
}
// バッファ破棄
delete[] buf;
//--------------------------
// 3.ファイルCLOSE
//--------------------------
// ファイルCLOSE
if (DxLib::FileRead_close(fileHandle) == -1)
{
// エラー
DxLib::printfDx("ファイルCloseエラー");
return false;
}
return true;
}
// プログラムは android_main から始まります
int android_main(void)
{
// DXライブラリ初期化
if (DxLib::DxLib_Init() == -1) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// グラフモード設定
DxLib::SetGraphMode(SCREEN_X, SCREEN_Y, COLOR_DIPS);
// 画面を青くする
DxLib::DrawBox(0, 0, SCREEN_X, SCREEN_Y, DxLib::GetColor(0, 0, 255), TRUE);
// InternalDataPathを取得
char internalDataPath[1024];
DxLib::GetInternalDataPath(internalDataPath, sizeof(internalDataPath));
// InternalDataPath の末尾に『/』+『読み込みたいファイル名』を加えた文字列を作成
// https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4125
char testFilePath[1024];
::sprintf(testFilePath, "%s/test.text", internalDataPath);
// ファイル書き込み(上書き)
const unsigned int ROW_NUM = 2; // 行数は2
std::vector<std::string> writeRows;
writeRows.reserve(ROW_NUM); // 行の数だけ容量だけを事前に確保 ※なくてもいい
writeRows.push_back("これはテストです。");
writeRows.push_back("あああああ。");
if (SaveText(testFilePath, writeRows) == false)
{
DxLib::printfDx("ファイル書き込み失敗しました。");
}
// ファイル読み取り
std::vector<std::string> loadRows;
loadRows.reserve(ROW_NUM); // 行の数だけ容量だけを事前に確保 ※なくてもいい
if (LoadText(testFilePath, loadRows, 1024) == false)
{
DxLib::printfDx("ファイル読み取り失敗しました。");
}
// ファイルから読み取った行を出力
for (int i = 0, n = loadRows.size(); i < n; ++i)
{
DxLib::printfDx(loadRows[i].c_str());
}
// printfDxを描画
DxLib::ScreenFlip();
DxLib::WaitKey(); // キー入力待ち
DxLib::DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}