Is std::stoi actually safe to use?

Does std::stoi throw an error on the input “abcxyz”? Yes. I think your confusion may come from the fact that strtol never reports an error except on overflow. It can report that no conversion was performed, but this is never referred to as an error condition in the C standard. strtol is defined similarly by all three C standards, and I will spare … Read more

C++ #include guards

The preprocessor is a program that takes your program, makes some changes (for example include files (#include), macro expansion (#define), and basically everything that starts with #) and gives the “clean” result to the compiler. The preprocessor works like this when it sees #include: When you write: The contents of some_file almost literally get copy pasted into the file … Read more

Is std::stoi actually safe to use?

Does std::stoi throw an error on the input “abcxyz”? Yes. I think your confusion may come from the fact that strtol never reports an error except on overflow. It can report that no conversion was performed, but this is never referred to as an error condition in the C standard. strtol is defined similarly by all three C standards, and I will spare … Read more

C++ #include guards

The preprocessor is a program that takes your program, makes some changes (for example include files (#include), macro expansion (#define), and basically everything that starts with #) and gives the “clean” result to the compiler. The preprocessor works like this when it sees #include: When you write: The contents of some_file almost literally get copy pasted into the file … Read more

Insert object at index of vector c++

The straight forward answer is you need an iterator. The iterator for std::vector supports random access, which means you can add or subtract an integer value to or from an iterator. The better answer is don’t use an index, use an iterator. What is your loop? You should be able to refactor the loop to … Read more

What is std::move(), and when should it be used?

Wikipedia Page on C++11 R-value references and move constructors In C++11, in addition to copy constructors, objects can have move constructors.(And in addition to copy assignment operators, they have move assignment operators.) The move constructor is used instead of the copy constructor, if the object has type “rvalue-reference” (Type &&). std::move() is a cast that produces … Read more

“X does not name a type” error in C++

When the compiler compiles the class User and gets to the MyMessageBox line, MyMessageBox has not yet been defined. The compiler has no idea MyMessageBox exists, so cannot understand the meaning of your class member. You need to make sure MyMessageBox is defined before you use it as a member. This is solved by reversing the definition order. However, you have a cyclic dependency: if you move MyMessageBox above User, … Read more