在运行时打开文件系统上的文件不需要在源代码中提及该文件的名称。(例如,您可以向用户询问文件名,然后打开它就好了!)
#include
如果您希望将数据嵌入到程序的可执行文件中(因此不依赖于运行时文件系统上的文件),您可能会在源中提供数据的情况。但要做到这一点,您必须将文件格式化为有效的 C++ 数据声明。所以那时它不会是一个.txt
文件。
例如,在 strings.cpp
#include <string>
// See http://stackoverflow.com/questions/1135841/c-multiline-string-literal
std::string myData =
"12345\n"
"Success";
然后在你的主程序中:
#include <iostream>
#include <sstream>
#include "strings.cpp"
using namespace std;
int main (int nNumberOfArgs, char* pszArgs[])
{
istringstream in (myData);
int x;
// Note: "sz" is shorthand for "string terminated by zero"
// C++ std::strings are *not* null terminated, and can actually
// legally have embedded nulls. Unfortunately, C++ does
// have to deal with both kinds of strings (such as with the
// zero-terminated array of char*s passed as pszArgs...)
string str;
// Note: >> is the "extractor"
in >> x >> str;
// Note: << is the "inserter"
cout << x << "\n" << str << "\n";
return 0;
}
一般来说,#include
像这样只 -ing 一个源文件不是你想要做的事情的方式。如果您在项目中的多个文件中执行此操作(myData 的重复声明),您很快就会遇到麻烦。所以通常的技巧是把东西分成头文件和实现文件……包括头文件,你想多少次都行,但只把一个实现的副本放入你的构建过程中。