C++ 在C+中使用文字字符串混合定义+;
我创建了一个#定义哪些指向特定目录。然后,我想将此定义与字符串文字结合使用:C++ 在C+中使用文字字符串混合定义+;,c++,C++,我创建了一个#定义哪些指向特定目录。然后,我想将此定义与字符串文字结合使用: #define PATH_RESOURCES "/path/to/resources/" std::ifstream datafile(PATH_RESOURCES + "textures.dat"); 但是,编译器抱怨使用+运算符添加字符类型: error: invalid operands of types ‘const char [11]’ and ‘const char [13]’ to binary ‘op
#define PATH_RESOURCES "/path/to/resources/"
std::ifstream datafile(PATH_RESOURCES + "textures.dat");
但是,编译器抱怨使用+运算符添加字符类型:
error: invalid operands of types ‘const char [11]’ and ‘const char [13]’ to binary ‘operator+’
错误:“常量字符[11]”和“常量字符[13]”类型的操作数对二进制“运算符+”无效
那么,如何将#define与字符串文字结合起来呢?或者,有没有更好的方法来做到这一点?我认为使用常量变量可能是一种替代方法,但这意味着必须传递另一个参数,我更愿意将其作为全局定义保留。您可以通过依次写入两个字符串文字来组合它们,而不必在它们之间加上
+
:
std::ifstream datafile(PATH_RESOURCES "textures.dat");
其中一个字符串文字恰好是通过预处理器定义的,这一事实没有多大变化:您也可以这样做:
std::ifstream datafile(PATH_"/path/to/resources/" "textures.dat");
下面是一个。您可以通过依次写入两个字符串文字来组合它们,而在它们之间没有
+
加号:
std::ifstream datafile(PATH_RESOURCES "textures.dat");
其中一个字符串文字恰好是通过预处理器定义的,这一事实没有多大变化:您也可以这样做:
std::ifstream datafile(PATH_"/path/to/resources/" "textures.dat");
这是一个例子。试试看
std::ifstream datafile(PATH_RESOURCES "textures.dat");
两个相邻的字符串文字连接起来。试试看
std::ifstream datafile(PATH_RESOURCES "textures.dat");
相邻的两个字符串文本连接起来。使用
std::ifstream数据文件(路径资源“textures.data”)代码>
请注意缺少+运算符
你也可以这样做
std::ifstream数据文件(std::string(路径_资源)+std::string(“textures.data”)代码>如果您真的需要。使用std::ifstream数据文件(路径资源“textures.data”)代码>
请注意缺少+运算符
你也可以这样做
std::ifstream数据文件(std::string(路径_资源)+std::string(“textures.data”)如果确实需要,请编写代码。创建一个std::string,将您的#define string分配给它并添加第二个文本。然后使用字符串
std::string str(PATH_RESOURCES);
str = str + "textures.dat";
std::ifstream datafile(str);
创建一个std::string,将#define string分配给它并添加第二个文本。然后使用字符串
std::string str(PATH_RESOURCES);
str = str + "textures.dat";
std::ifstream datafile(str);
谢谢,这很有效。我不知道字符串文字可以这样组合。谢谢,这很有效。我不知道字符串文字可以这样组合。