如何捕获不包含 null 终止符的字符串的错误
How to catch an error with a character string not containing a null terminator
我在下面附加了一个相当简单的代码,其中文件名被手动输入到程序中,并被定义为大小为 9 的数组,这在本例中是正确的。 为了简洁起见,将文件名传递给此处未包含的函数。 该函数将在读取数据时以五个向量字符串的形式打开文件,并将它们反馈回主程序,在那里可以通过指针算法访问它们。 正如我在这种情况下提到的,该程序可以工作,但是如果我将 File1 的大小从 9 更改为 8,它不起作用,因为没有考虑空终止符。 本着使这个程序更安全的精神,我希望程序能够识别字符串大小不包括空终止符的条件,并跳过函数调用及其所有相关代码行。 但是,当不包含 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;
}
考虑使用 std::string 作为文件名的容器。那么 File1.c_str() 应该始终是一个以空结尾的字符串。
如果你真的想做你在问题中写的东西,循环遍历 File1 数组并检查每个字符是否为"\0"会告诉你刺痛是否以 null 终止。我不建议像这样使用 strcpy,因为它可能会写出数组的界限。
相关文章:
- C++函数的字符串错误"find_first_of"
- 流字符串错误输出
- 在图像上覆盖文本的程序会产生无休止的字符串错误
- 字符串错误的向量
- C++字数统计程序使用C字符串错误在程序运行后
- 从函数返回字符串C++错误
- 字符串错误或编译器错误
- SQL 字符串错误?没有这样的列
- C/C++ 字符串错误与 ARM SEG 故障总线错误
- 字符串错误输出
- C++调用堆上的类(空字符串错误)
- 运行时字符串错误C++
- 字符串递归函数中的字符串错误
- 从文本文件/文本流中读取Q字符串错误
- 动态内存c++程序中的字符串错误
- 发现c++正则表达式子字符串错误模式
- 在Cocos2d-x中比较字符串错误
- c++读TXT到字符串错误
- 字符串错误检查
- Chromium嵌入式框架VS2013字符串错误