Read file line by line using ifstream in C++

First, make an ifstream: #include <fstream> std::ifstream infile(“thefile.txt”); The two standard methods are: Assume that every line consists of two numbers and read token by token: int a, b; while (infile >> a >> b) { // process pair (a,b) } Line-based parsing, using string streams: #include <sstream> #include <string> std::string line; while (std::getline(infile, line)) … Read more

How to concatenate a std::string and an int

In alphabetical order: std::string name = “John”; int age = 21; std::string result; // 1. with Boost result = name + boost::lexical_cast<std::string>(age); // 2. with C++11 result = name + std::to_string(age); // 3. with FastFormat.Format fastformat::fmt(result, “{0}{1}”, name, age); // 4. with FastFormat.Write fastformat::write(result, name, age); // 5. with the {fmt} library result = fmt::format(“{}{}”, … Read more

How to find out if an item is present in a std::vector?

You can use std::find from <algorithm>: #include <algorithm> #include <vector> vector<int> vec; //can have other data types instead of int but must same datatype as item std::find(vec.begin(), vec.end(), item) != vec.end() This returns an iterator to the first element found. If not present, it returns an iterator to one-past-the-end. With your example: #include <algorithm> #include … Read more

Why use static_cast(x) instead of (int)x?

The main reason is that classic C casts make no distinction between what we call static_cast<>(), reinterpret_cast<>(), const_cast<>(), and dynamic_cast<>(). These four things are completely different. A static_cast<>() is usually safe. There is a valid conversion in the language, or an appropriate constructor that makes it possible. The only time it’s a bit risky is … Read more

Sleep for milliseconds

In C++11, you can do this with standard library facilities: #include <chrono> #include <thread> std::this_thread::sleep_for(std::chrono::milliseconds(x)); Clear and readable, no more need to guess at what units the sleep() function takes.

Appending a vector to a vector [duplicate]

a.insert(a.end(), b.begin(), b.end()); or a.insert(std::end(a), std::begin(b), std::end(b)); The second variant is a more generically applicable solution, as b could also be an array. However, it requires C++11. If you want to work with user-defined types, use ADL: using std::begin, std::end; a.insert(end(a), begin(b), end(b));

Why is my program slow when looping over exactly 8192 elements?

The difference is caused by the same super-alignment issue from the following related questions: Why is transposing a matrix of 512×512 much slower than transposing a matrix of 513×513? Matrix multiplication: Small difference in matrix size, large difference in timings But that’s only because there’s one other problem with the code. Starting from the original … Read more

What is a segmentation fault?

Segmentation fault is a specific kind of error caused by accessing memory that “does not belong to you.” It’s a helper mechanism that keeps you from corrupting the memory and introducing hard-to-debug memory bugs. Whenever you get a segfault you know you are doing something wrong with memory – accessing a variable that has already … Read more