Long literals, with continuations: Difference between revisions

Content added Content deleted
m (Simplified code.)
(New post.)
Line 524: Line 524:
</pre>
</pre>


=={{header|C++}}==
<syntaxhighlight lang="c++">
#include <chrono>
#include <format>
#include <iostream>
#include <regex>
#include <sstream>
#include <string>

const std::string ELEMENTS = R"(
hydrogen helium lithium beryllium
boron carbon nitrogen oxygen
fluorine neon sodium magnesium
aluminum silicon phosphorous sulfur
chlorine argon potassium calcium
scandium titanium vanadium chromium
manganese iron cobalt nickel
copper zinc gallium germanium
arsenic selenium bromine krypton
rubidium strontium yttrium zirconium
niobium molybdenum technetium ruthenium
rhodium palladium silver cadmium
indium tin antimony tellurium
iodine xenon cesium barium
lanthanum cerium praseodymium neodymium
promethium samarium europium gadolinium
terbium dysprosium holmium erbium
thulium ytterbium lutetium hafnium
tantalum tungsten rhenium osmium
iridium platinum gold mercury
thallium lead bismuth polonium
astatine radon francium radium
actinium thorium protactinium uranium
neptunium plutonium americium curium
berkelium californium einsteinium fermium
mendelevium nobelium lawrencium rutherfordium
dubnium seaborgium bohrium hassium
meitnerium darmstadtium roentgenium copernicium
nihonium flerovium moscovium livermorium
tennessine oganesson
)";

const std::string UNNAMED_ELEMENTS = R"(
ununennium unquadnilium triunhexium penthextrium
penthexpentium septhexunium octenntrium ennennbium
)";

std::vector<std::string> rawstring_to_vector(const std::string& text, const char& delimiter) {
std::regex regx("\\s+");
std::string delimit(1, delimiter);
std::string elements = std::regex_replace(text, regx, delimit);
elements = elements.substr(1, elements.size() - 2);

std::vector<std::string> result;
std::stringstream stream(elements);
std::string item;
while ( getline(stream, item, delimiter) ) {
result.push_back (item);
}
return result;
}

int main() {
std::vector<std::string> elements = rawstring_to_vector(ELEMENTS, ' ');
std::vector<std::string> unnamed = rawstring_to_vector(UNNAMED_ELEMENTS, ' ');

elements.erase(std::remove_if(elements.begin(), elements.end(),
[unnamed](std::string text){ return std::find(unnamed.begin(), unnamed.end(), text) != unnamed.end(); }),
elements.end());

const std::string zone = "Asia/Shanghai";
const std::chrono::zoned_time zoned_time { zone, std::chrono::system_clock::now() };

std::cout << "Last revision Date: " << std::format("{:%Y-%m-%d Time %H:%M}", zoned_time) << " " << zone << std::endl;
std::cout << "Number of elements: " << elements.size() << std::endl;
std::cout << "Last element : " << elements[elements.size() - 1] << std::endl;
}
</syntaxhighlight>
{{ out }}
<pre>
Last revision Date: 2023-08-04 Time 00:18 Asia/Shanghai
Number of elements: 118
Last element : oganesson
</pre>


=={{header|Crystal}}==
=={{header|Crystal}}==