GetPath删除和连接字符

时间:2013-12-27 11:52:42

标签: c++ string

我将获得环境'APPDATA'并从APPDATA \ Roaming返回到APPDATA的前一个目录,然后我想与另一个目录APPDATA \ Local \ conan,最后将'\'替换为'\'。目前我遇到了问题。我怎样才能回到目录?

代码假设是

#include <string>
#include <iostream>
#include <algorithm> 

char* path;
path= getenv("APPDATA"); <!--GetEnv APPDATA-->
??? <!-- Go back directory -->
strncpy(path,"Local\\stuff,12); <!-- add front directory-->
<!-- Replace slash to double slash -->
std::string s = path;
std::replace(s.begin(),s.end(), '\','\\');

1 个答案:

答案 0 :(得分:0)

您是否尝试删除字符串中的最后一个目录?

如果是这样,您可以使用std :: string :: find_last_of(“\\”)来查找最后一个斜杠,然后使用返回值来创建子字符串。以下示例将执行此操作。

std::string path = getenv("APPDATA"); //<!--GetEnv APPDATA-->
//??? <!-- Go back directory -->
std::size_t slashPosition = path.find_last_of( "\\" );
// Remove slash at the end if found easier to handle if trailing slash is/not found)
path = path.substr( 0, slashPosition ); 
path += "\\Local\\stuff"; //<!-- add front directory-->

我删除了用double替换单个后面的代码,因为它不能像写的那样工作,我认为没有必要。我还使用std :: string作为路径变量来利用std :: string。

中的方法