C++ 对于流,使用变量作为名称

C++ 对于流,使用变量作为名称,c++,compiler-construction,ofstream,C++,Compiler Construction,Ofstream,大家好 对不起,我说的是英语,但我会说西班牙语 在这周,学习和工作这个项目,我想创建一个软件,使文件。我们 范例 但是编译器在二进制加号运算符中有错误 在特定目录中创建文件的任何备选方案、示例或其他内容 再见,谢谢 我相信您希望name是std::string-否则,name+[suffix]将尝试将后缀字符串添加到数组中,并且不会编译。如果您确实希望将名称保留为数组,则应使用将字符串附加在一起。我相信您希望名称为std::string-否则,name+[suffix]将尝试将后缀字符串添加到数

大家好

对不起,我说的是英语,但我会说西班牙语

在这周,学习和工作这个项目,我想创建一个软件,使文件。我们

范例

但是编译器在二进制加号运算符中有错误

在特定目录中创建文件的任何备选方案、示例或其他内容

再见,谢谢

我相信您希望name是std::string-否则,name+[suffix]将尝试将后缀字符串添加到数组中,并且不会编译。如果您确实希望将名称保留为数组,则应使用将字符串附加在一起。

我相信您希望名称为std::string-否则,name+[suffix]将尝试将后缀字符串添加到数组中,并且不会编译。如果确实要将名称保留为数组,则应使用将字符串附加在一起。

运算符+的任一侧必须是std::string1,以便运算符+连接字符串:

string name;
cin >> name;

ofstream PlayerPawn("D:\\UDK\\UDK_XXX\\Development\\Src\\" + name + "\\Classes\\_PlayerPawn.us");
并使用std::string来表示这些内容;使用std::string时,char*不会出现缓冲区溢出的危险

1实际上,它只需要是一个支持运算符+,而不是特别支持std::string的类类型,但是您不知道它将做什么。

运算符+的任何一侧都必须是std::string1,运算符+才能连接字符串:

string name;
cin >> name;

ofstream PlayerPawn("D:\\UDK\\UDK_XXX\\Development\\Src\\" + name + "\\Classes\\_PlayerPawn.us");
并使用std::string来表示这些内容;使用std::string时,char*不会出现缓冲区溢出的危险


1实际上,它只需要是一个支持运算符+(不是特别是std::string)的类类型,但您不知道它将执行什么操作。

但是,将变量更改为std::string,但会出现此错误。。。D:\Users\Warkanlock\Documents\Code Blocks\UDK_ProyectSimple\main.cpp | 20 |错误:调用'std::basic_of stream::basic_of stream std::basic_string'|时没有匹配的函数。@Warkanlock请确保将include放在代码顶部。@Warkanlock您的错误来自使用std::of stream的其他地方。您需要粘贴代码的其余部分。@Warkanlock ofstream的构造函数采用常量char*,而不是字符串。把…+nombre+。。。在括号中,然后在括号结束后调用字符串上的c_str。像这样:ofstreamplayerpownd:\\UDK\\UDK\u XXX\\Development\\Src\\+nombre+\\Classes\\\u playerpown.us.c\u str;这是另一个关于这种奇怪现象的例子。很好地捕捉到Seth。但是,将变量更改为std::string,但出现此错误。。。D:\Users\Warkanlock\Documents\Code Blocks\UDK_ProyectSimple\main.cpp | 20 |错误:调用'std::basic_of stream::basic_of stream std::basic_string'|时没有匹配的函数。@Warkanlock请确保将include放在代码顶部。@Warkanlock您的错误来自使用std::of stream的其他地方。您需要粘贴代码的其余部分。@Warkanlock ofstream的构造函数采用常量char*,而不是字符串。把…+nombre+。。。在括号中,然后在括号结束后调用字符串上的c_str。像这样:ofstreamplayerpownd:\\UDK\\UDK\u XXX\\Development\\Src\\+nombre+\\Classes\\\u playerpown.us.c\u str;这是另一个关于这种奇怪现象的例子。很好地捕获了Seth。但是,将de变量更改为字符串会出现相同的错误!D:\Users\Warkanlock\Documents\Code Blocks\UDK_ProyectSimple\main.cpp | 20 |错误:调用'std::basic_of stream::basic_of stream std::basic_string'|没有匹配的函数。好吧,这不是同一个错误-您需要包括定义什么是of stream isYa,这包括在这个文件中:oSee my comment在@Seth Carnegie's answerBut的尾部,将de Variable更改为String,并且有相同的错误!D:\Users\Warkanlock\Documents\Code Blocks\UDK_ProyectSimple\main.cpp | 20 |错误:调用'std::basic_of stream::basic_of stream std::basic_of stream::basic_string'|没有匹配的函数。好吧,这不是同一个错误-你需要包括定义什么of stream isYa,这包括在这个文件中:在@Seth Carnegie的答案的末尾看我的注释