我有一个关于如何在从文件中获取信息时包含字符串文字的问题。让我展示一下我的代码以便更好地理解:
Program.b :
print \"Hello World\n\"; print \"Commo Estas :)\n\"; print \"Bonjour\";print \"Something\"; return 0;
main.cpp (我已将实际文件最小化为此问题所需的内容):
int main()
{
std::string file_contents;
std::fstream file;
file.open("Program.b");
std::ifstream file_read;
file_read.open("Program.b");
if(file_read.is_open())
while(getline(file_read,file_contents));
cout << file_contents << endl;
}
所以当我打印file_contents
时,我得到:
print \"Hello World\n\"; print \"Commo Estas :)\n\"; print \"Bonjour\";print \"Something\"; return 0;
您可以看到它包含\n
。有没有办法让它成为一个真正的字符文字,所以打印它实际上会打印一个新行? (我希望引号也一样。)
答案 0 :(得分:6)
尝试这样的事情:
<强> Program.b 强>
R"inp(print "Hello World\n"; print "Commo Estas :)\n"; print "Bonjour";print "Something"; return 0;)inp"
<强>的main.cpp 强>
int main() {
std::string file contents =
#include "Program.b"
;
std::cout << file_contents << std::endl;
}
您还可以更改Program.b
以使其更具可读性:
R"inp(
print "Hello World\n";
print "Commo Estas :)\n";
print "Bonjour";
print "Something";
return 0;
)inp"
运行时变体应该只是:
<强> Program.b 强>
print "Hello World\n";
print "Commo Estas :)\n";
print "Bonjour";
print "Something";
return 0;
<强>的main.cpp 强>
int main()
{
std::string file_contents;
std::fstream file;
file.open("Program.b");
std::ifstream file_read;
file_read.open("Program.b");
if(file_read.is_open()) {
std::string line;
while(getline(file_read,line)) {
file_contents += line + `\n`;
}
}
cout << file_contents << endl;
}
答案 1 :(得分:2)
你可以做一个简单的查找+替换。
std::size_t pos = std::string::npos;
while ((pos = file_contents.find("\\n")) != std::string::npos)
file_contents.replace(pos, 1, "\n");
//Every \n will have been replaced by actual newline character