powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Конвертировать строку
25 сообщений из 50, страница 1 из 2
Конвертировать строку
    #34010115
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

Простите за глупый вопрос, но я что-то не могу справиться:
Код: plaintext
1.
2.
LPCWSTR w;
wchar_t p[MAX_PATH], pw[MAX_PATH], pp[MAX_PATH];
…
Как собрать w = p + L“Str“ + pw + L“Str“ + pp ?

Заранее спасибо ВС
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010231
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinЗаранее спасибо ВСЯ так понял, это Borland C, тогда попробуй WideString.
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010302
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoЯ так понял, это Borland C, тогда попробуй WideString.Нет MS VS 6
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010349
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про ЦСтринг читал?
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010373
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoпро ЦСтринг читал?
А где?
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010449
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чем вам нормальные и простые char* не нраявятся???
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010454
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopin maXmoпро ЦСтринг читал?
А где?

На заборе, есс-но.
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010471
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklinа чем вам нормальные и простые char* не нраявятся???

Юникода, можеть?
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010505
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh Aklinа чем вам нормальные и простые char* не нраявятся???

Юникода, можеть?

мужики - брэйк...
цэстринг так же имеет свои нюансы...освобождение аллокированного статического буфеоа (забывают частенько)...и гэт лен возвращает не то что ожидают...

а так - если библиотека и так есть, нафига велосипед то ?

(круглый)
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010534
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0
а так - если библиотека и так есть, нафига велосипед то ?


Так, подскажи автору как собирать, наверное, никто с LPCWSTR не работает :)
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010592
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh kolobok0
а так - если библиотека и так есть, нафига велосипед то ?


Так, подскажи автору как собирать, наверное, никто с LPCWSTR не работает :)

не понял подвоха..селектор не знает как писать ? кхм...аднака...

Код: plaintext
1.
2.
3.
	wchar_t p[MAX_PATH], pw[MAX_PATH], pp[MAX_PATH];
	CString strOut;
	strOut.Format("%s%s%s", p, pw, pp);

вроде так с утра было...

(круглый)
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010599
cpp_expert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinПривет всем!

Простите за глупый вопрос, но я что-то не могу справиться:
Код: plaintext
1.
2.
LPCWSTR w;
wchar_t p[MAX_PATH], pw[MAX_PATH], pp[MAX_PATH];
…
Как собрать w = p + L“Str“ + pw + L“Str“ + pp ?

Заранее спасибо ВС

Начните с того, чтобы выяснить, что есть LPCWSTR:
#ifdef UNICODE
typedef LPCWSTR LPCTSTR;
#else
typedef LPCSTR LPCTSTR;
#endif

typedef CONST WCHAR *LPCWSTR;

-- как видно из определения, реализовать так просто через "+" не получится!
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010600
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0цэстринг так же имеет свои нюансы...освобождение аллокированного статического буфеоа (забывают частенько)...и гэт лен возвращает не то что ожидают...
(круглый)Крайне криво!

авторЮникода, можеть?ДА!
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010610
cpp_expert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
typedef basic_string <wchar_t> wstring;

wstring w(L"");

w = p + wstring(L"Str") + pw + wstring(L"Str") + pp;

-- думаю следует писать так.
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010628
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0не понял подвоха..селектор не знает как писать ? кхм...аднака...

Код: plaintext
1.
2.
3.
	wchar_t p[MAX_PATH], pw[MAX_PATH], pp[MAX_PATH];
	CString strOut;
	strOut.Format("%s%s%s", p, pw, pp);

вроде так с утра было...

(круглый)Может с утра и было, но у меня вместо первых двух символов получаются два квадрата!
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010668
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhТак, подскажи автору как собирать, наверное, никто с LPCWSTR не работает :)я работаю с WCHAR* :)
васик стринг - как вариант, благо его в стандарт пытались пропихнуть.
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010722
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
s.Format("%s%c%s%c%s", p, L'\n',pp, L'\n',pw);
Дает два квадратика и остаток p, без первых двух символов. и все!
проблема ещё в том, что pp и pw могут быть пустыми!
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010750
cpp_expert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopin
Код: plaintext
s.Format("%s%c%s%c%s", p, L'\n',pp, L'\n',pw);
Дает два квадратика и остаток p, без первых двух символов. и все!
проблема ещё в том, что pp и pw могут быть пустыми!

Ребята, CString не умеет работать с WCHAR. Ваши два квадратика в начале - это два байта, содержащие длину строки на основе WCHAR. Есть аналоги CString-a, например BasicString, использующие функционал CString, basic_string<> и _variant_t в одном классе!
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010782
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopin...Как собрать w = p + L“Str“ + pw + L“Str“ + pp ?...

за CString прошу прощения...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
	WCHAR x[] = L"xru хрю 1";
	WCHAR xx[] = L"xru хрю 2";
	WCHAR xxx[] = L"xru хрю 3";

	WCHAR out[ 100 ];
	out[ 0 ] = 0x00;
	wcsncat_s(out,  100 , x, wcslen(x));
	wcsncat_s(out,  100 , xx, wcslen(xx));
	wcsncat_s(out,  100 , xxx, wcslen(xxx));


(круглый)
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010786
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cpp_expertЕсть аналоги CString-a, например BasicString, использующие функционал CString, basic_string<> и _variant_t в одном классе!BasicString не нашел оного!
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010821
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cpp_expertРебята, CString не умеет работать с WCHAR.Ы! В мсдне по-другому написано.
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010827
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы если не умеем работать с директивами препроцессора, можно почитать мсдн и заюзать CStringW в явном виде.
...
Рейтинг: 0 / 0
Конвертировать строку
    #34010969
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
	WCHAR x[] = L"xru хрю 1";
	WCHAR xx[] = L"xru хрю 2";
	WCHAR xxx[] = L"xru хрю 3";

	WCHAR out[ 100 ];
	out[ 0 ] = 0x00;
	wcsncat_s(out,  100 , x, wcslen(x));
	wcsncat_s(out,  100 , xx, wcslen(xx));
	wcsncat_s(out,  100 , xxx, wcslen(xxx));
(круглый)Как-то оно не красиво смотриться, хотя работает!
...
Рейтинг: 0 / 0
Конвертировать строку
    #34011017
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopin..Как-то оно не красиво смотриться, хотя работает!


тогда как в предыдущем примере, только замените
CString
на
CStringW

и будет Вам счастье
(круглый)
...
Рейтинг: 0 / 0
Конвертировать строку
    #34011058
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, что получилось в результате, если, конечно, Ынтиресно:
Код: plaintext
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
extern "C" __declspec(dllexport) WCHAR * ReadLink(LPCWSTR LnkPath)
{
	HRESULT hres;
	int szBuf,SW;
	IShellLinkW * psl;
	IPersistFile * pfd;
	LPCOLESTR LnkPathC = (LPCOLESTR)LnkPath;
	WCHAR  s[MAX_PATH * 3  +  4 ];
	s[ 0 ] = 0x00;
	WCHAR p[MAX_PATH],pw[MAX_PATH],pp[MAX_PATH];

	hres = CoInitialize(NULL);
	if (hres == S_OK || hres == S_FALSE)
	{
		if (CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkW, (LPVOID*)&psl) == S_OK)
		{
			if(psl->QueryInterface(IID_IPersistFile,(LPVOID*)&pfd) == S_OK)
			{
				if(pfd->Load(LnkPathC, STGM_READWRITE | STGM_SHARE_EXCLUSIVE) == S_OK)
				{
					
					szBuf= (MAX_PATH+ 1 ) * sizeof(wchar_t);
					if(psl->GetPath(p,szBuf, NULL,SLGP_UNCPRIORITY) == S_OK)
					{
                                                //Пошло строительство:
						wcsncat(s,p,wcslen(p));
						wcsncat(s,L"\n",wcslen(L"\n"));

						if(psl->GetArguments(pp, szBuf) == S_OK)
							wcsncat(s,pp,wcslen(pp));
						else
							wcsncat(s,L"dEadlInk",wcslen(L"dEadlInk"));
						wcsncat(s,L"\n",wcslen(L"\n"));

						if(psl->GetWorkingDirectory(pw, szBuf) == S_OK)
							wcsncat(s,pw,wcslen(pw));
						else
							wcsncat(s,L"dEadlInk",wcslen(L"dEadlInk"));
						wcsncat(s,L"\n",wcslen(L"\n"));

						if(psl->GetShowCmd(&SW) != S_OK) SW =  1 ; 
						switch (SW)
						{
							case SW_SHOWMAXIMIZED:
								wcsncat(s,L"3",wcslen(L"3"));
								break;
							case SW_SHOWMINNOACTIVE:
								wcsncat(s,L"7",wcslen(L"7"));
								break;
							default:
								wcsncat(s,L"1",wcslen(L"1"));
								break; 
						}				
					pfd->Release();
					}
					else wcsncat(s,L"Not GetPath",wcslen(L"Not GetPath"));
				}
				else wcsncat(s,L"Not Load",wcslen(L"Not Load"));
				psl->Release();
			}
			else wcsncat(s,L"Not QueryInterface",wcslen(L"Not QueryInterface"));
			CoUninitialize();
		}
		else wcsncat(s,L"Not CoCreateInstance",wcslen(L"Not CoCreateInstance")); 
	}
	else wcsncat(s,L"Not CoInitialize",wcslen(L"Not CoInitialize"));

return s;
 	
}
...
Рейтинг: 0 / 0
25 сообщений из 50, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Конвертировать строку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]