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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
CSIS119
2 / 2 / 0
Регистрация: 28.11.2012
Сообщений: 11
#1

Преобразование Char в System::String - C++

28.11.2012, 22:26. Просмотров 1975. Ответов 8
Метки нет (Все метки)

Здравствуйте!
Я пишу программу по типу монитора системных ресурсов. Название процессора решил взять из реестра. В консоли все прошло успешно, а вот в Windows Forms затрудняюсь с выводом в label.
C++
1
2
3
4
5
6
7
HKEY rKey;
        CHAR Reget[256];
        DWORD RegetPath=256;
            RegOpenKeyEx(HKEY_LOCAL_MACHINE,L"\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", NULL, KEY_QUERY_VALUE, &rKey);
            RegQueryValueEx(rKey,L"ProcessorNameString", NULL, NULL,(LPBYTE)&Reget, &RegetPath);
this->label8->Text = Reget;
this->label8->Text = ToCharArray(Reget);
Последние две строки это разные способы которыми я пробовал выводить информацию. После первого способа компилятор говорит, что невозможно Преобразование Char в System::String.
При использовании второго варианта говорит что не найден идентификатор ToCharArray.
Подскажите как быть.

Добавлено через 1 час 11 минут
попробовал еще один метод
C++
1
this->label8->Text =gcnew System::String( Reget);
выбило 5 ошибок:
Ошибка 3 error LNK2028: ссылка на неразрешенную лексему (0A0000A3) "extern "C" long __stdcall RegQueryValueExW(struct HKEY__ *,wchar_t const *,unsigned long *,unsigned long *,unsigned char *,unsigned long *)" (?RegQueryValueExW@@$$J224YGJPAUHKEY__@@PB_WPAK2PAE2@Z) в функции "private: void __clrcall monitor_sis_res::Form1::button3_Click_1(class System::Object ^,class System::EventArgs^)" (?button3_Click_1@Form1@monitor_sis_res@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) G:\КСиС\Курсовая 2012\Курсовая 2012\monitor_sis_res\monitor_sis_res\monitor_sis_res.obj

Ошибка 4 error LNK2028: ссылка на неразрешенную лексему (0A0000A4) "extern "C" long __stdcall RegOpenKeyExW(struct HKEY__ *,wchar_t const *,unsigned long,unsigned long,struct HKEY__ * *)" (?RegOpenKeyExW@@$$J220YGJPAUHKEY__@@PB_WKKPAPAU1@@Z) в функции "private: void __clrcall monitor_sis_res::Form1::button3_Click_1(class System::Object ^,class System::EventArgs ^)" (?button3_Click_1@Form1@monitor_sis_res@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) G:\КСиС\Курсовая 2012\Курсовая 2012\monitor_sis_res\monitor_sis_res\monitor_sis_res.obj


Ошибка 5 error LNK2019: ссылка на неразрешенный внешний символ "extern "C" long __stdcall RegQueryValueExW(struct HKEY__ *,wchar_t const *,unsigned long *,unsigned long *,unsigned char *,unsigned long *)" (?RegQueryValueExW@@$$J224YGJPAUHKEY__@@PB_WPAK2PAE2@Z) в функции "private: void __clrcall monitor_sis_res::Form1::button3_Click_1(class System::Object ^,class System::EventArgs ^)"(?button3_Click_1@Form1@monitor_sis_res@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) G:\КСиС\Курсовая 2012\Курсовая 2012\monitor_sis_res\monitor_sis_res\monitor_sis_res.obj


Ошибка 6 error LNK2019: ссылка на неразрешенный внешний символ "extern "C" long __stdcall RegOpenKeyExW(struct HKEY__ *,wchar_t const *,unsigned long,unsigned long,struct HKEY__ * *)" (?RegOpenKeyExW@@$$J220YGJPAUHKEY__@@PB_WKKPAPAU1@@Z) в функции "private: void __clrcall monitor_sis_res::Form1::button3_Click_1(class System::Object ^,class System::EventArgs ^)" (?button3_Click_1@Form1@monitor_sis_res@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) G:\КСиС\Курсовая 2012\Курсовая 2012\monitor_sis_res\monitor_sis_res\monitor_sis_res.obj


Ошибка 7 error LNK1120: 4 неразрешенных внешних элементов G:\КСиС\Курсовая 2012\Курсовая 2012\monitor_sis_res\Debug\monitor_sis_res.exe 1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 22:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование Char в System::String (C++):

Где и почему используют ту или иную строку std::string, char[], System::String^ ? - C++
Где и почему используют ту или иную строку std::string, char, System::String^ ? Объясните пожалуйста где нужно использовать...

Преобразование string в char* - C++
функция c_str переделывает стринг строку в const char* , а мне надо чтобы было без const то есть существует ли функция которая переделает...

Преобразование string в char - C++
как преобразовать тип string в char?

Преобразование String^ в char* - C++
Здравствуйте. У меня есть строка кода, принимающая массив символов char *ex = gets_s(buff, sizeof(buff)); Сейчас я добавляю...

Преобразование string to char - C++
В общем никак не получается перегнать из строки в чар. Что надо: Имеется StringGrid и структура. Обьявлена структура как: struct...

Преобразование string в char* - C++
int fun(char*); int main() { int a; string strok; strok="abc"; strok+="cde"; ...

8
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
28.11.2012, 22:46 #2
Циклом можно попробовать, char в string, что типо
C++
1
2
3
4
string s;
char a[10];
for (int i=0;i<strlen(a);i++)
s+=a[i];
Примитивно, но что-то на ум ничего лучше не приходит.
0
CSIS119
2 / 2 / 0
Регистрация: 28.11.2012
Сообщений: 11
28.11.2012, 23:13  [ТС] #3
если я правильно понял, то нужно сделать так:
C++
1
2
3
4
5
6
7
8
9
10
HKEY rKey;
        TCHAR Reget[256];
        DWORD RegetPath=256;
            RegOpenKeyEx(HKEY_LOCAL_MACHINE,L"\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", NULL, KEY_QUERY_VALUE, &rKey);
            RegQueryValueEx(rKey,L"ProcessorNameString", NULL, NULL,(LPBYTE)&Reget, &RegetPath);
            string s;
char a[Reget];
for (int i=0;i<strlen(a);i++)
s+=a[i]
this->label8->Text =s;
в таком случае выдает предупреждения:
Предупреждение 1 warning C4129: H: неизвестная escape-последовательность g:\ксис\курсовая 2012\курсовая 2012\monitor_sis_res\monitor_sis_res\Form1.h 425 (на строку RegOpenKeyEx(HKEY_LOCAL_MACHINE,L"\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", NULL, KEY_QUERY_VALUE, &rKey)
и Предупреждение 9 warning C4018: <: несоответствие типов со знаком и без знака g:\ксис\курсовая 2012\курсовая 2012\monitor_sis_res\monitor_sis_res\Form1.h 429
(строка for (int i=0;i<strlen(a);i++))

Добавлено через 1 минуту
а нет ли никакого банального преобразования типов, как например atoi. или вообще как в делфи IntToStr)))&
0
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
28.11.2012, 23:42 #4
ну есть dinamic_cast<>, поищи. Это динамическое преобразование типов, или static_cast<>
1
XRuZzz
Антикодер
681 / 583 / 29
Регистрация: 15.09.2012
Сообщений: 2,531
28.11.2012, 23:52 #5
лень было читать первый пост , но у Мейерса сеня читал про s.assign(ch);
а вообще тут много полезного
полезная ссылка
1
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
29.11.2012, 01:30 #6
CSIS119, а вариант с подключением необходимых библиотек не рассматривается?) чтобы исчезли ошибки линковки.
0
CSIS119
2 / 2 / 0
Регистрация: 28.11.2012
Сообщений: 11
29.11.2012, 20:39  [ТС] #7
Цитата Сообщение от I.M. Посмотреть сообщение
CSIS119, а вариант с подключением необходимых библиотек не рассматривается?) чтобы исчезли ошибки линковки.
та вроде все подключил. по крайней мере в консоли работало

Добавлено через 22 минуты
у меня и в консоли не сразу вывело, по крайней мере стандартными методами не получалось, а именно cout или printf. а вот получилось когда воспользовался wprintf. а как в формах быть не знаю((
0
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
29.11.2012, 21:00 #8
C++
1
#pragma comment(lib, "advapi32")
есть?
1
CSIS119
2 / 2 / 0
Регистрация: 28.11.2012
Сообщений: 11
29.11.2012, 21:12  [ТС] #9
нет, такого не было, сейчас попробую с ним.
в консоли работало с
C++
1
2
3
4
#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#include "iostream"
Добавлено через 6 минут
Цитата Сообщение от I.M. Посмотреть сообщение
#pragma comment(lib, "advapi32")
помогло, огромное спасибо.
конечный результат такой:
C++
1
2
3
4
5
6
7
private: System::Void button3_Click_1(System::Object^  sender, System::EventArgs^  e) { 
        HKEY rKey;
        TCHAR Reget[256];
        DWORD RegetPath=256;
            RegOpenKeyEx(HKEY_LOCAL_MACHINE,L"\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", NULL, KEY_QUERY_VALUE, &rKey);
            RegQueryValueEx(rKey,L"ProcessorNameString", NULL, NULL,(LPBYTE)&Reget, &RegetPath);
        this->label8->Text =gcnew System::String( Reget);
0
29.11.2012, 21:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 21:12
Привет! Вот еще темы с ответами:

Преобразование string в char* - C++
char* string_to_char(string str){ int size = str.size(); char *ch = new char; for(int i = 0; i &lt; size; i++) { ch = str; ...

Преобразование char* в string - C++
Доброго времени суток. Если я динамически выделил память для массива типа char, то как его можно преобразовать в string?

Преобразование из string в массив char - C++
Помогите присвоить символьные значения компоненты textBox в массив char чтобы потом можно было использовать его как параметр функции при её...

String в char. Не получается преобразование - C++
Задание: 1.Получить имя как параметр командной строки(через аргументы функции main) На экране: &quot;Привет, Имя&quot; 2.Есть функция cat().Должны...


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

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

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