#include <iostream>
#include <string>
using namespace std;
inline void error(const string& msg) {
throw msg.c_str();
}
inline void error(const char* msg = nullptr) {
throw msg;
}
void func2()
{
error("Just error.");
}
void func()
{
func2();
error(); // Just return to main()
}
int main()
{
while (true) {
try {
func();
}
catch (const char* msg) {
if (msg != nullptr)
cerr << "Error: " << msg << endl;
}
}
return 0;
}
#include <iostream>
using namespace std;
typedef enum {
Key1 = 1,
Key2 = 2,
Key4 = 4,
Key8 = 8
} Key;
void func(uint32_t keys)
{
if (keys & 1)
cout << "Key1 ";
if (keys & 2)
cout << "Key2 ";
if (keys & 4)
cout << "Key4 ";
if (keys & 8)
cout << "Key8 ";
cout << endl;
}
int main()
{
func(Key1 | Key4 | Key8);
return 0;
}
typedef struct {
char* name;
} MyStruct;
void serialize(ostream& os, const MyStruct& obj)
{
char* p = (char*) obj;
for (int n = 0; n != sizeof(MyStruct); ++n)
os << *p;
}
// Удаление первых n слов из строки
string dellwords(const string& st, int n)
{
string result;
string::const_iterator it = st.begin();
enum {
SkipWhitespace,
SkipWord,
CopyText
} state = SkipWhitespace;
while (it != st.end()) {
switch (state) {
case SkipWhitespace:
if (! isspace(*it)) {
if (n == 0) {
state = CopyText;
result += *it;
}
else
state = SkipWord;
}
break;
case SkipWord:
if (isspace(*it)) {
state = SkipWhitespace;
--n;
}
break;
case CopyText:
result += *it;
break;
}
++it;
}
return result;
}
int main()
{
setlocale(LC_ALL, "RUSSIAN");
string text;
cout << "Введите текст: ";
getline(cin, text);
// удаляю слова «Запись» и «исходного» из строки
cout << dellwords(text, 2) << endl;
return 0;
}