2009-05-31 2 views
8

Я пытаюсь открыть файл на C++, а сервер, в котором работает прогама, основан на tux.Открытие файла в unix с помощью C++

string filename = "../dir/input.txt"; works but 
string filename = "~jal/dir1/dir/input.txt"; fails 

Есть ли способ открыть файл в C++, когда указанное имя файла находится во втором формате?

ответ

12

~jal расширение выполняется оболочкой (Баш/CSH/все), а не в самой системе, так что ваша программа пытается заглянуть в папку с именем ~jal/, не /home/jal/.

Я не кодер C, но getpwent() может быть тем, что вам нужно.

+0

+1 для запоминания основ ... duh .... – ojblass

+0

Я имел в виду, что я не был на плакате вопроса. – ojblass

+0

Magnus, $ HOME содержит * ваш * homedir - и ~ jal расширяется до homedir пользователя jal '. – grawity

9

Вы можете сканировать строку, заменив ~user на соответствующий каталог.

POSIX функция wordexp делает это, и несколько других вещей

  • подстановка переменной, как вы можете использовать $HOME
  • опциональной подстановку команды, как $(echo foo) (можете быть отключены)
  • арифметического расширения, например $((3+4))
  • слово расщепление, как расщепление ~/a ~/b на два слова
  • подстановочные расширение, как *.cpp
  • и цитировал, как "~/a ~/b" остается, что
+1

+1, я не знал о wordexp. – zvrba

Смежные вопросы