Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
#1

Адрес до рабочего стола - C++

23.10.2012, 14:48. Просмотров 1254. Ответов 9
Метки нет (Все метки)

Когда прописываю адрес до файла C:\\Users\\%username%\\AppData\\Local\\File.txt то программа просто не видит его!!! Хотя тоже самое в бат файле работает отлично... Как мне в c++ прописать адрес???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nightelf18
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 19
23.10.2012, 15:04     Адрес до рабочего стола #2
Может, проблема с правами доступа?
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
23.10.2012, 15:11  [ТС]     Адрес до рабочего стола #3
Цитата Сообщение от nightelf18 Посмотреть сообщение
Может, проблема с правами доступа?
А как эти проблемы исправить?
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
23.10.2012, 15:22     Адрес до рабочего стола #4
Запускать программу от имени того пользователя, который имеет право лезть в ту папку и открывать там файлы?..
nightelf18
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 19
23.10.2012, 15:29     Адрес до рабочего стола #5
C++
1
2
3
4
void main(){
    fstream file("C:\\Documents and Settings\\Admin\\Рабочий стол\\1.txt",ios::out);
    file.close();
}
Создает на рабочем столе файл. Доступ есть (WinXP).
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
23.10.2012, 21:11  [ТС]     Адрес до рабочего стола #6
Цитата Сообщение от nightelf18 Посмотреть сообщение
C++
1
2
3
4
void main(){
    fstream file("C:\\Documents and Settings\\Admin\\Рабочий стол\\1.txt",ios::out);
    file.close();
}
Создает на рабочем столе файл. Доступ есть (WinXP).
Мне нужно как то в c++ прописать имя пользователя, почему то %username% не срабатывает(
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 245
23.10.2012, 22:17     Адрес до рабочего стола #7
Какие проблемы?
Откройте в Windows нужную папку. В окне увидите её адрес (путь) и прописываете его в свой код (не забудьте удвоить все слэши).
HomeR_J_SimpsoN
59 / 59 / 2
Регистрация: 15.10.2010
Сообщений: 356
23.10.2012, 22:37     Адрес до рабочего стола #8
Цитата Сообщение от Egor138 Посмотреть сообщение
почему то %username% не срабатывает(
%username% -- это просто переменная ОС. А адрес в строке воспринимается буквально, посимвольно, то есть проверки на вхождение в адрес некой переменной ОС не происходит. Если Вам нужно использовать конкретную переменную попробуйте получить ее командой из консоли. Что то вроде system('command');. Где command -- команда получения имени пользователя.
Но при этом придется перехватить выходной поток команды system(). Придется помучиться. А может и нет =)
Проще прописать %username% в батнике при инсталляции приложения и юзать его.
Удачи.
Nameless One
Эксперт С++
5765 / 3414 / 255
Регистрация: 08.02.2010
Сообщений: 7,430
24.10.2012, 06:48     Адрес до рабочего стола #9
Egor138, %username% - это переменная окружения, которая автоматически интерполируется (расширяется) в строках командным процессором.

С точки зрения языка C++ "%username%" - это обычная строка, которая не имеет особой интерпретации. Для того, чтобы получить значение переменной окружения, в C/C++ используется функция getenv из stdlib.h (C) или cstdlib (С++):

C
1
2
3
4
5
6
7
8
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    puts(getenv("username"));
    exit(0);
}
Так что тебе нужно получить строку-значение соответствующей переменной окружения, а потом уже сконструировать строку пути. Но следует отметить, что значение переменной окружения не всегда может быть доступно, и в этом случае getenv возвращает NULL.

Не по теме:

Цитата Сообщение от HomeR_J_SimpsoN Посмотреть сообщение
Если Вам нужно использовать конкретную переменную попробуйте получить ее командой из консоли. Что то вроде system('command');. Где command -- команда получения имени пользователя.
Но при этом придется перехватить выходной поток команды system(). Придется помучиться. А может и нет =)
Проще прописать %username% в батнике при инсталляции приложения и юзать его.
А вот и костылями запахло



PS. Windows понимает прямые слэши в путях.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2012, 10:19     Адрес до рабочего стола
Еще ссылки по теме:

Программы для рабочего стола C++
Смена обоев рабочего стола C++
Консоль должна появиться при запуске в определенный области рабочего стола C++
C++ Сделать скриншот рабочего стола
C++ Программа корректировки реестра для управления элементами рабочего стола ОС Windows

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 245
24.10.2012, 10:19     Адрес до рабочего стола #10
//выводит имя (путь) текущей папки
C++
1
2
3
4
5
#include <iostream>
int main()
{
system ("CD");
}
Yandex
Объявления
24.10.2012, 10:19     Адрес до рабочего стола
Ответ Создать тему
Опции темы

Текущее время: 04:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru