ファイル名が手動でプログラムに入力され、サイズ 9 の配列として定義されている、かなり単純なコードが以下に添付されています。この例では正しいです。ファイルの名前は、簡潔にするためにここには含まれていない関数に渡されます。この関数は、ファイルを 5 つのベクトル文字列としてデータを読み込んで開き、それらをメイン プログラムにフィードバックして、ポインター演算によってアクセスできるようにします。このケースで述べたように、プログラムは動作しますが、File1 のサイズを 9 から 8 に変更すると動作しません。これは、ヌル ターミネータが考慮されていないためです。これをより安全なプログラムにするという精神で、文字列のサイズに null ターミネータが含まれていない場合に条件を認識し、関数呼び出しとそれに関連するすべてのコード行をスキップするようにプログラムに求めています。でも、null ターミネータが含まれていない場合、コードはエラーを生成しないため、このインスタンスで例外処理を使用する方法がわかりません。任意の考えをいただければ幸いです。
#include <vector>
#include <iostream>
#include <fstream>
#include "Read_Columnar_File.h"
int main(int argc, const char * argv[]) {
std::vector<std::string> str3;
std::vector<int> str4;
std::vector<char> str5;
std::vector<int> str6;
unsigned long size_Misc;
float Peak_Misc_Value;
std::vector<float> MISC_DATA; // Reads in Misc. spending data
char File1[9];
strcpy(File1, "Misc.txt");
Read_Five_Columns(File1,MISC_DATA,str3,str4,str5,str6);
str3.clear(); str4.clear(); str5.clear(); str6.clear();
size_Misc = MISC_DATA.size();
auto max_Misc = std::max_element(MISC_DATA.begin(), MISC_DATA.end());
Peak_Misc_Value = *max_Misc;
}