Ես տեղյակ եմ բազմաթիվ նմանատիպ հարցերի մասին այս կայքում: Ինձ շատ է դուր գալիս, որ լուծումը նշված է հետևյալ հղումով.
https://stackoverflow.com/a/25021520/884553
Որոշ փոփոխություններով կարող եք տեքստային ֆայլ ներառել կոմպիլյացիայի ժամանակ, օրինակ՝
constexpr const char* s =
#include "file.txt"
ԲԱՅՑ այս աշխատանքը կատարելու համար դուք պետք է ավելացնեք տողի բառացի նախածանց և վերջածանց ձեր բնօրինակ ֆայլին, օրինակ.
R"(
This is the original content,
and I don't want this file to be modified. but i
don't know how to do it.
)";
Հարցս հետևյալն է. կա՞ տարբերակ, որ այս գործն աշխատի, բայց չփոփոխվի file.txt-ը:
(Ես գիտեմ, որ կարող եմ օգտագործել հրամանի տողի գործիքները պատճենելու, պատճենելու և պատճենին կցելու, պատճենը հավաքելուց հետո հեռացնելու համար: Ես ավելի էլեգանտ լուծում եմ փնտրում, քան սա: հուսով եմ, որ այլ գործիքների կարիք չկա)
Ահա թե ինչ եմ փորձել (բայց չի աշխատում).
#include <iostream>
int main() {
constexpr const char* s =
#include "bra.txt" // R"(
#include "file.txt" //original file without R"( and )";
#include "ket.txt" // )";
std::cout << s << "\n";
return 0;
}
/opt/gcc8/bin/g++ -std=c++1z a.cpp
In file included from a.cpp:5:
bra.txt:1:1: error: unterminated raw string
R"(
^
a.cpp: In function ‘int main()’:
a.cpp:4:27: error: expected primary-expression at end of input
constexpr const char* s =
^
a.cpp:4:27: error: expected ‘}’ at end of input
a.cpp:3:12: note: to match this ‘{’
int main() {
^