Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中使用文字字符串混合定义+;_C++ - Fatal编程技术网

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);

谢谢,这很有效。我不知道字符串文字可以这样组合。谢谢,这很有效。我不知道字符串文字可以这样组合。