parse - uint16 to string c++




Como converter o tipo de caminho de impulso para string? (4)

Chamar myPath.generic_string() fará o que você precisa.

Olá eu atualmente tenho um programa que obtém um caminho completo da localização de um arquivo e é colocado em uma variável que é o tipo de: boost :: filesystem2 :: path

Eu pesquisei como fazer isso e descobri que usar:

string result1 = boost::filesystem::basename (myPath)

irá converter o caminho para string mas somente converte o nome do arquivo (por exemplo, se o caminho é "C: \ name \ bobsAwesomeWordDoc.docx" ele apenas retorna "bobsAwesomeWordDoc").

Eu encontrei o seguinte sobre como converter o caminho inteiro para string, mas eu não sei como implementá-lo no meu programa. Eu tentei várias maneiras, mas estou recebendo erros de conversão.

const std :: string & string (): Essa rotina retorna uma cópia da string com a qual o caminho foi inicializado, com formatação de acordo com as regras gramaticais do caminho.

(encontrado here )

Eu tentei:

string result1 = string& (myPath);

e algumas outras variações.


Eu acredito que você precisa fazer um pouco mais do que apenas converter o caminho para uma string - você deve primeiro obter a versão canônica do caminho - um caminho absoluto sem elementos de link simbólico - e convertê- lo em uma string:

boost::filesystem::canonical(myPath).string();

PS - Eu tenho programado com o Boost há muito tempo e não consegui encontrar essa informação facilmente nos documentos.

Atualização (out 2017)

Documentação: boost::filesystem::canonical .

Mas note que a partir de C ++ 17 existe std::filesystem , com canonical e muito mais.


Isso funcionou em wxWidgets: (Eu sei que deveria usar apenas os utilitários wx, mas é um teste)

void WxWidgetsBoostTestFrame::OnTestBtnClick(wxCommandEvent& event)
{
    boost::filesystem::path currentPath;
    currentPath = boost::filesystem::current_path();
    std::string curDirString;
    curDirString = boost::filesystem::canonical(currentPath).string();
    wxString mystring(curDirString.c_str(), wxConvUTF8);
    wxMessageBox(mystring); // output:  C:/Users\client\Desktop...      
}

Você só precisa chamar myPath.string() .





path