Я создал это регулярное выражение и использовал значение для печати в строку.Regex-ed значение String
std::string s (filename);
std::smatch m;
std::regex e ("\/(?:.(?!\/))+$");
while (std::regex_search (s,m,e)) {
for (auto p:m) std::cout << p << " ";
s = m.suffix().str();
}
std::string currFileName = s;
std::string Original = filename;
std::string newFile = Original + currFileName;
std::cout << newFile;
Проблема не в терминале.
печатное
/simple-loops.cc /home/fypj/build/simple-loops.cc
Ожидаемое значение
/home/fypj/build/simple-loops.cc/simple-loops.cc
Вы можете спросить, что имя файла является
llvm::StringRef filename;
SourceLocation ST = f->getSourceRange().getBegin();
filename = Rewrite.getSourceMgr().getFilename(ST);
Да, как выглядит строка * filename? Является ли напечатанное значение таким же, как и входящим? –
@wiktorstribizew /home/fypj/build/simple-loops.cc/ – HiWorld
Означает ли это, что вы хотите усечь строку в последнем '/'? –