Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
AlexLan73
2 / 2 / 1
Регистрация: 06.10.2013
Сообщений: 151
#1

Функция GetCurrentDirectory меняет тип переменной - C++

07.05.2015, 22:44. Просмотров 400. Ответов 7
Метки нет (Все метки)

Подскажите пожалуйста.
Определяю от куда была запущена программа. В режиме Debug все работает.
Когда компилируемую в режиме Release не работает. Функция GetCurrentDirectory выдает значение buffer в другом типе,
который не преобразуется в переменную типа string.
C++
1
2
3
4
5
6
7
    TCHAR buffer[MAX_PATH];
    GetCurrentDirectory(MAX_PATH, buffer);
    string str;
    ostringstream ostr;
 
    ostr << buffer;
    string path = ostr.str();
Подскажите пожалуйста как решить данную проблему.
С уважением, Александр
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2015, 22:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Функция GetCurrentDirectory меняет тип переменной (C++):

Восьмибитный тип переменной (что за тип, но не BYTE и не CHAR? - C++
Вроде давно занимаюсь программированием на С++, но встала проблема... Есть некий массив переменных имеющих 8 битный размер... без знака...

Функция не меняет значения - C++
Помогите, пожалуйста, не могу заставить функцию изменить значение переменных. Должно быть digita=5 и digitb=4 void to2 (int a, int...

Функция не меняет значения двумерного массива - C++
Проблема в Функции BuildNewMap, мне нужно, чтобы значения элемента в массиве myMap поменялось с 0 на заданное в аргументе функции. Вызвал...

Функция которая меняет переданные ей переменные? - C++
Как ее сделать

Функция не меняет значение аргументов (за ее пределами) - C++
Код: //заголовочный #ifndef HTPOTC_H #define HTPOTC_H class Rational{ public: Rational(int = 1,int = 2,int = 1,int = 2);

Функция,которая меняет расширение файла на новое - C++
Здравствуйте,уважаемые форумчане,помогите мне пожалуйста,доделать задание(не компилится,и я не понимаю в чём именно могут быть ошибки.) ...

7
nmcf
6207 / 5518 / 1932
Регистрация: 14.04.2014
Сообщений: 23,166
07.05.2015, 22:57 #2
Ты A или W функию используешь? Укажи явно. Если W, то надо wstring. И достаточно просто
C++
1
path = buffer;
0
AlexLan73
2 / 2 / 1
Регистрация: 06.10.2013
Сообщений: 151
07.05.2015, 23:03  [ТС] #3
Извини, я не понял.
В конечном варианте мне нужно получить переменную типа string.
Она дальше в программе используется
0
nmcf
6207 / 5518 / 1932
Регистрация: 14.04.2014
Сообщений: 23,166
07.05.2015, 23:05 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
TCHAR у тебя char или wchar_t?
Вот по-древнему:
C++
1
2
3
char buffer[MAX_PATH];
GetCurrentDirectoryA(MAX_PATH, buffer);
string path = buffer;
1
AlexLan73
2 / 2 / 1
Регистрация: 06.10.2013
Сообщений: 151
07.05.2015, 23:08  [ТС] #5
Хороший вариант я с него и начал))
но он в режиме Release не работает
0
nmcf
6207 / 5518 / 1932
Регистрация: 14.04.2014
Сообщений: 23,166
07.05.2015, 23:12 #6
Как не работает? Ошибку выдаёт или что? Букву A в конце функции не забыл?
Проверяй возврат GetCurrentDirectoryA(), должно быть больше нуля.
1
AlexLan73
2 / 2 / 1
Регистрация: 06.10.2013
Сообщений: 151
08.05.2015, 00:01  [ТС] #7
!!!!!!!!! Спасибо Работает !!!
(( продолжение головной боли тоже самое
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
LPCSTR ppp = f1.c_str(); <== это работает в режиме Debeg
Когда компилируемую в режиме Release требует тип==> LPCWSTR
hFind = FindFirstFile(ppp, &FindFileData);

Подскажите как эту решить проблему?
За первую еще раз спасибо)))

Добавлено через 42 минуты
Может подскажите как преобразовать string в LPCWSTR для FindFirstFile(..
0
nmcf
6207 / 5518 / 1932
Регистрация: 14.04.2014
Сообщений: 23,166
08.05.2015, 09:56 #8
По-правильному нужно выкинуть эту древность и использовать только Unicode-функции, которые с W, а также wchar_t вместо char и wstring вместо string.
В твоём случае по-видимому настройки проекта по использованию Unicode отличаются: для debug выбраны древние строки, а для release современные, там ищи.
1
08.05.2015, 09:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2015, 09:56
Привет! Вот еще темы с ответами:

Функция, что меняет первую букву слова на большую. - C++
Здравствуйте! Помогите, пожалуйста, написать функцию на Си, которая меняет первую букву на большую в каждом слове предложения.

Функция катороя в массиве меняет единиц на нули и наоборот - C++
Сложить функцию, которая меняет в одномерном массиве, заданного размера - из единиц и нулей, все единицы на нули, а нули - на единицы....

Функция меняет все отрицательные элементы массива на максимальный - C++
Написать функцию, которая принимает одномерный массив и его размерностью. Функция меняет в массиве все элементы меньше ноля, на...

Написать программу, которая меняет местами значения двух переменных с использованием дополнительной переменной. - C++
3. Написать программу, которая меняет местами значения двух переменных с использованием дополнительной переменной. Пункт 5.16 Правил:...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru