.. SPDX-FileCopyrightText: 2024 The IceTray Contributors .. .. SPDX-License-Identifier: BSD-2-Clause .. highlight:: cpp Use std::vector and std::string instead of arrays ------------------------------------------------- Don't use C-style ``const char *``'s, arrays, ``strcmp``, ``strcpy``, or ``strncmp``. C-style arrays (``float[3]``) can be used if their size is known at compile time. Use STL strings instead:: string s1, s2; s1 == s2; // equality comparison if (s1 < s2) { } // dictionary comparison s1 = s2; // assignment s1 = "heeheehee"; s1 += s2; // concatenation cout << "length of s1 is " << s1.length(); Reasoning """"""""" Buffer overruns and related security flaws are a serious problem with C-style code, specifically arrays, pointer arithmetic, and memory management. Avoid this completely by using higher level C++ facilities. Reasons to prefer C++ ``std::vector`` and ``std::string``: * They manage their own memory automatically * They have a rich interface, making complex functionality easy * They are compatible with the C memory model * They offer extended checking * They are already highly optimized for most situations Reference """"""""" There's a decent reference on strings, vectors, and other STL items at https://www.cppreference.com/cppstring/.