У меня есть довольно простой код, приведенный ниже, где имя файла вводится вручную в программу и определяется как массив размером 9, что является правильным в этом пример. Имя файла передается функции, которая не включена здесь для краткости. Функция откроет файл в считанных данных как пять векторных строк и вернет их в основную программу, к которой к ним можно получить доступ с помощью арифметики указателя. Как я уже упоминал в этом случае, программа работает, но если я изменю размер файла 1 с 9 по 8, это не сработает, потому что нулевой ограничитель не учитывается. В духе того, чтобы сделать эту более безопасную программу, я хотел бы, чтобы программа распознавала условия, когда размер строки не включает нулевой ограничитель и пропускает вызов функции и все связанные с ней строки кода. Однако, когда нулевой терминатор не включен, код не вызывает ошибки, поэтому я не уверен, как использовать обработку исключений в этом экземпляре. Любые мысли были бы оценены.Как поймать ошибку с символьной строкой, не содержащей нулевой ограничитель
#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;
}
В этой * программе, в духе избежания ошибок, вы должны написать 'char File1 [] =" Misc.txt ";' – hobbs