C++ c++;-从变量字符串提升文件系统路径

C++ c++;-从变量字符串提升文件系统路径,c++,boost-filesystem,C++,Boost Filesystem,我在创建boost::filesystem::path对象(boostv1.55)时遇到了这个问题。我不知道如何从字符串变量或字符串串联创建路径 //Example 1 namespace fs = boost::filesystem; String dest = "C:/Users/username"; fs::path destination (dest); //Error here //Example 2 namespace fs = boost::filesystem; Strin

我在创建
boost::filesystem::path
对象(boostv1.55)时遇到了这个问题。我不知道如何从字符串变量或字符串串联创建路径

//Example 1
namespace fs = boost::filesystem;
String dest = "C:/Users/username";  
fs::path destination (dest); //Error here

//Example 2
namespace fs = boost::filesystem;
String user = "username";
fs::path destination ("C:/Users/" + user); //Error here as well.

//Example 3
namespace fs = boost::filesystem;
fs::path destination ("C:/Users/username");
我只能在双引号之间指定整个字符串(如上面的示例3)时创建path对象,但这不允许变量输入

基本上,如何使用字符串作为起点来实现
fs::path
对象类

谢谢你的帮助

编辑


以增强文件系统/文件系统路径文档。重新学习C++,所以其中的一些还有些我的脑袋…我不太明白这里的构造器是如何工作的。。。现在真的不知道该问什么。。。。我非常感谢您的指点。

谢谢GManNickG-您确实解决了我的问题。我使用C++ Builder 10.1,并能在代码中混淆<代码>字符串>代码>,分配它的值等。实际上,是“代码”>“显示消息”(/CODE),它引导我到答案——在C++ Builder中,它想要一个ANSIstring参数来工作,而STD::string不会编译。C++ Builder 10.1定义了<代码>字符串< /C> >为ANSILASH,而不是STD::String。同样,我对C++是新手,所以当<代码>使用命名空间STD< /Cord>我没有意识到差异(我以前的面向对象知识大部分来自java,在这里你定义一个字符串为代码>字符串< /C>
//Working Example in C++ Builder 10.1 Starter
namespace fs = boost::filesystem;
std::string un = "/username";
std::string dest = "C:/Users" + un;  //concatenation test
fs::path destination (dest); //Works, no compiler error now

std::string pathStdString = destination.string(); //retrieve 'dest' as std:string from path
String pathAnsiString = pathStdString.c_str(); //Converts std::string to ansi

ShowMessage(pathAnsiString); //Output box showing the path (valid in C++ Builder)

希望这有助于其他人提出类似的问题。另外,关于如何将std::转换为Ansi,以防任何人发现它有用。

那么,什么是
String
?如何将它转换为文档中所述的
路径
可以从中构造的内容?你有
String
的定义,你告诉我们。p从C或String:“代码> STD::String 从它或某物。我有点重新学习C++……我不完全记得/知道你所要求的“代码”>“字符串< /代码>的定义”。更新到链接到文档……除了你知道没有什么“代码>字符串< /代码>,请张贴A。显然没有人愿意。详细说明,所以让我:字符串不是标准C++类。有一个类叫做“代码>字符串(实际上, STD::String ),从小写的“S”开始。看起来,你的程序包含另一个类,叫做“代码>字符串< /C>(大写字母S))。构造函数不工作,因为你传递它的代码< >代码>字符串/<代码>对象,它不知道什么,你需要给它的是一个<代码> STD::String 。@ RISAUDR要澄清,<代码> String 是你的代码的一部分,而不是C++语言的一部分。你应该能够在你的代码库中找到某个定义。