Code Snippets

Schneller Test ob eine Ganzzahl eine Zweierpotenz ist:

if (x != 0 && (x & (x-1)) == 0)

Ganze Datei in einem Rutsch in einen Vector oder beliebigen Container einlesen mit back_inserter.

#include <vector>
#include <iterator>
#include <algorithm>
#include <fstream>

// target vector
std::vector<unsigned char> buffer;

std::ifstream ifs("filename", ios_base::binary);
if (ifs.is_open())
{
	ifs.unsetf(skipws);
	std::copy(std::istream_iterator<unsigned char>(ifs),
		std::istream_iterator<unsigned char>(),
		std::back_inserter(buffer));
}

Ganze Text Datei in einem Rutsch in einen string einlesen. Es wird bei einer Hex 0 in der Datei gestoppt.

#include <string>
#include <fstream>

std::string buffer;
std::ifstream ifs("filename", ios_base::binary);
if (ifs.is_open())
{
	std::getline(ifs, buffer, '\0');
}

Zeilenweises einlesen einer Textdatei

#include <fstream>
#include <string>

std::ifstream ifs("filename");
if (ifs.is_open())
{
	std::string line;
	while (std::getline(ifs,line))
	{
		// do stuff with the line
	}
}
else
{
	// handle error
}

Container in einen std::ostream schieben

#include <iterator>
#include <algorithm>

std::ofstream ofs1("/tmp/s_encoded.txt");
ostream_iterator<char> os1( ofs1, "" );
std::copy(s_encoded.begin(), s_encoded.end(), os1);
Categories software
Tags c++