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

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

Войти
Регистрация
Восстановить пароль
 
c3490375
1 / 1 / 0
Регистрация: 04.06.2016
Сообщений: 75
Завершенные тесты: 2
#1

String и LPCWSTR - C++

29.06.2016, 22:47. Просмотров 372. Ответов 11
Метки нет (Все метки)

Здравствуйте, есть функция, показывающая дату создания файла и есть такая строчка:
C++
1
LPCWSTR fname1 = L"test.txt";
Дело в том, что в функцию передается string с названием файла
Все было бы просто, если заменить таким образом:
C++
1
2
3
4
void func(string fname)
}
     LPCWSTR fname1 = fname;
}
Но символ L, должен быть всегда перед названием файла:
C++
1
L"test.txt";
Подскажите, как можно побороть эту ситуацию.
Как передать в функцию string и далее ее преобразовать, чтобы было корректно.
C++
1
L"test.txt"
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2016, 22:47     String и LPCWSTR
Посмотрите здесь:

String в LPCWSTR - C++
В общем сложил как правильно строку(для пути проверки папки),но теперь не могу её записать в CreateDirectory.Помогите с проблемой. ...

Конвертировать string в LPCWSTR - C++
Как nbg string конвертировать в LPCWSTR и наоборот?

Преобразование переменной string к LPCWSTR - C++
День добрый! Столкнулся с проблемой преобразования string к LPCWSTR. Если используем строку в кавычках, то всё понятно, достаточно...

std::string конвертировать в LPCWSTR - C++
Как преобразовать std::string в LPCWSTR?Желательно не сложной операцией?Читал про метод c_str(),но не понял как его применить в данном...

Правильная конвертация string в LPCWSTR? - C++
Привет. Делаю вот так: string s_Path = "путь"; LPCWSTR l_Path; l_Path = (LPCWSTR)s_Path_vir.c_str(); Через отладчик не...

Побороть LPCWSTR - C++
Всем привет. Пишу программку на WinApi но столкнулся с простой проблемой. Мне нужно программно вставить текст в Edit. Код примерно такой: ...

wchar_t to LPCWSTR - C++
Ругается, что text является неинициализированной локальной переменной #include "stdafx.h" #include <iostream> #include <Windows.h>...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mishelle92
61 / 60 / 20
Регистрация: 09.10.2012
Сообщений: 190
Завершенные тесты: 1
29.06.2016, 22:50     String и LPCWSTR #2
Используйте std::wstring.
nmcf
5275 / 4595 / 1540
Регистрация: 14.04.2014
Сообщений: 18,257
29.06.2016, 22:52     String и LPCWSTR #3
LPCWSTR - указатель, для чего присваивание? Для юникод-строк нужно использовать wstring, а если нужен указатель, то c_str().
Banonanelly
89 / 21 / 21
Регистрация: 29.06.2016
Сообщений: 96
29.06.2016, 22:52     String и LPCWSTR #4
C++
1
2
std::wstring s;
s.c_str(); // возвращает const wchar_t *
c3490375
1 / 1 / 0
Регистрация: 04.06.2016
Сообщений: 75
Завершенные тесты: 2
29.06.2016, 23:10  [ТС]     String и LPCWSTR #5
Banonanelly, nmcf, mishelle92,
Не совсем понял, куда wstring нужно вписывать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <windows.h>
#include <string>
#include <iostream>
 
using namespace std;
 
void lastmod(string fname)
{
    HANDLE hFile1;
    FILETIME ftWrite;
    SYSTEMTIME stUTC2, stLocal2;
    LPCWSTR fname1 = L"test.txt";
    // Opening the existing file
    hFile1 = CreateFile(fname1, 0, 0, 0, OPEN_EXISTING, 0, 0);
    if (!GetFileTime(hFile1, 0, 0, &ftWrite))
    {
        cout << "  Не удалось открыть файл" << endl;
    }
    else
    {
        FileTimeToSystemTime(&ftWrite, &stUTC2);
        SystemTimeToTzSpecificLocalTime(NULL, &stUTC2, &stLocal2);
        printf("     Последний раз файл редактировали:\n \t%02d/%02d/%d %02d:%02d\n", stLocal2.wDay, stLocal2.wMonth, stLocal2.wYear, stLocal2.wHour, stLocal2.wMinute);
    }
    CloseHandle(hFile1);
}
 
void main()
{
    setlocale(LC_ALL, "rus");
    string fname = "test.txt";
    lastmod(fname);
    system("pause");
}
Banonanelly
89 / 21 / 21
Регистрация: 29.06.2016
Сообщений: 96
29.06.2016, 23:17     String и LPCWSTR #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от c3490375 Посмотреть сообщение
Не совсем понял, куда wstring нужно вписывать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//...
 
void lastmod(const wstring fname)
{
    //...
    hFile1 = CreateFile(fname.c_str(), 0, 0, 0, OPEN_EXISTING, 0, 0);
    //...
}
 
void main()
{
    setlocale(LC_ALL, "rus");
    wstring fname = L"test.txt";
    lastmod(fname);
    system("pause");
}
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
29.06.2016, 23:18     String и LPCWSTR #7
del me
Banonanelly
89 / 21 / 21
Регистрация: 29.06.2016
Сообщений: 96
29.06.2016, 23:21     String и LPCWSTR #8
LPCWSTR - Long Pointer Const Wide STRing, т.е. const wchar_t *
c3490375
1 / 1 / 0
Регистрация: 04.06.2016
Сообщений: 75
Завершенные тесты: 2
29.06.2016, 23:37  [ТС]     String и LPCWSTR #9
Banonanelly, DrOffset, Благодарю, остался последний вопрос.
Данная строка из main используется в других функциях, можно ли ее конвертировать непосредственно в самой функции lastmod?
Banonanelly
89 / 21 / 21
Регистрация: 29.06.2016
Сообщений: 96
29.06.2016, 23:45     String и LPCWSTR #10
Цитата Сообщение от c3490375 Посмотреть сообщение
Данная строка из main используется в других функциях, можно ли ее конвертировать непосредственно в самой функции lastmod?
Что вы имеете ввиду под словом "конвертировать"?
c3490375
1 / 1 / 0
Регистрация: 04.06.2016
Сообщений: 75
Завершенные тесты: 2
29.06.2016, 23:49  [ТС]     String и LPCWSTR #11
Цитата Сообщение от Banonanelly Посмотреть сообщение
Что вы имеете ввиду под словом "конвертировать"?
Ну в функцию мы передаем так же string.
C++
1
void lastmod(string fname)
А далее мы в функции конвертируем string в wstring.
Или такое невозможно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2016, 00:03     String и LPCWSTR
Еще ссылки по теме:

char* -> LPCWSTR - C++
Всем доброго времени суток. Пытаюсь перевести char* строчку (строка текста переменной длины). Собственно код: char* LastChar; ...

LPCWSTR переслать через сокет - C++
Как же тяжело в C++ что-либо сделать со строками. Печально, что для представления строк столько типов, но пользоваться неудобно ими всеми....

Std::allocator<wchar_t>>' to 'LPCWSTR' - C++
собственно есть list&lt;wstring&gt; куда вставили много адресов типа L&quot;D:\\66\\99&quot;; Задача удалять папки по этому адресу (пока что папки пусты...

Как преобразовать LPCWSTR в char*? - C++
Здравствуйте! Как преобразовать LPCWSTR в char*?

Запутался как преобразовать LPCWSTR -> LPTSTR - C++
Всех приветствую пишу на vs2013 c++ есть функция один из параметров которой (LPCWSTR filePath) проблема в том, что мне необходимо...


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

Или воспользуйтесь поиском по форуму:
Banonanelly
89 / 21 / 21
Регистрация: 29.06.2016
Сообщений: 96
30.06.2016, 00:03     String и LPCWSTR #12
Цитата Сообщение от c3490375 Посмотреть сообщение
в функции конвертируем string в wstring.
Или такое невозможно?
Можно, но не нужно.

Передавайте в функцию wstring вместо string

C++
1
void lastmod(const wstring fname)
Yandex
Объявления
30.06.2016, 00:03     String и LPCWSTR
Ответ Создать тему
Опции темы

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