Zrovna Windows a Microsoft bych z téhle nekompatibility neobviňoval.
Ten problém přeci není v nekompatibilitě. Problém je v té knihovně, že se chová zmateně.
Ale ona se nechová zas tak zmateně. fwrite v C prostě u souborů otevřených v textovém režimu převádí '\n' na platformně závislé konce řádků a fread zase zpět. Pokud ten převod nechci, tak otevřu ten soubor jako binární. No a iostreamy v C++ se chovají stejně, aby v tom nebyl zmatek.
Tomu já rozumím. Ale přeci jen, čistě pocitově, když zadám \n, že to bude převádět - ok. Když zadám \x0A, že to bude převádět, to už je takové...
Ale chápu. Prostě to \n se převede na byte, a pak se teprve to číslo (podle módu) překládá. Zmatený to není, uznávám.
A jaké jsou pocity z toho, že \x41 znamená v ascii stringu to samé co A? Taky je to divný pocit, nebo to dělají jen speciální znaky?
Počkej počkej, to je naopak. \x41 je to samé jako A. Ale třeba \s není " ", že jo. Že by má deformace z reqexpr?
Aha, tak takováhle deformace.
Tohle jsou escape znaky, které s regexem nemají společného vlastně nic. Ve výsledném stringu žádné lomítko nebude. Je to prostě jenom způsob, jak zapsat do stringu i kontrolní znaky. C žádné \s ani nezná.
Ale osobně se tomuhle zmatení docela divím. Všechny programovací jazyky, co znám mají escape znaky stejné nebo hodně podobné Cčku. Java, Python, nebo třeba i Haskell. Při každém použití regexu z kódu jsem musel ty regexová lomítka psát právě přes escape sekvence nebo přes raw stringy.
V jakém jazyce to programujete, že vás první pokus o použití regexu nemilosrdně nevyškolil právě v použití těch escape znaků?