Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
GENDALF_ISTARI
12 / 29 / 19
Регистрация: 20.08.2013
Сообщений: 715
1

Как преобразовать все int,float,double в строки LPWSTR, LPCTSTR

22.09.2014, 12:48. Просмотров 2788. Ответов 14
Метки нет (Все метки)

Столкнулся с проблемой
не как не переведу в нормальный вид
вот код
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
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
70
71
72
73
74
75
76
77
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <math.h>
#include <string>
#include <string.h>
#include <xstring>
#include <sstream>
#include <fstream>
#include <cstring>
#include <wchar.h>
#include <stdarg.h>
using namespace std;
 
 
LPWSTR float_to_LPWSTR (float conv);
//string float_to_string (float conv);
char* float_to_charstr (float conv);
 
int main ()
{
//setlocale(LC_ALL,"Russian");
float program_version=1.1;
string name_title="Программа ";
string sum_title="";
string version="";
 
/////////float_to_string/////////
ostringstream ostr;
ostr<<program_version;
version=ostr.str();
/////////float_to_string/////////
    
 
sum_title=name_title+version;
 
LPWSTR title_programm=(LPWSTR)sum_title.c_str();
//title_programm=title_programm+version;
color_title(title_programm);
_getch();
 
return 0;
}
 
void color_title(LPWSTR title_programm1)
{
    system("color 3f");
    setlocale (LC_ALL, "RUS");
    SetConsoleTitle(title_programm1);
}
 
LPWSTR float_to_LPWSTR (float conv)
{
    char buff[100];
    (buff, "%d", conv);
    LPWSTR version =(LPWSTR)buff;
    return version;
}
 
/*string float_to_string (float conv)
{
    ostringstream ostr;
    ostr<<conv;
    string version=ostr.str();
    return version;
}*/
 
char* float_to_charstr (float conv)
{
    char *s;
    //stringstream iostr;
    //iostr<<num;
    //iostr>>s;
    sprintf(s,"%f",conv);
 
    return s;
}
По фото получаються ероглифы
как исправить ошибку ???
0
Миниатюры
Как преобразовать все int,float,double в строки LPWSTR, LPCTSTR  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2014, 12:48
Ответы с готовыми решениями:

Преобразовать 2 числа int в 1 число float(double) | double int1.int2
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их...

Как мне программу с int переделать в Float i double?
как мне програму с int переделать в Float i double??? #include &lt;iostream&gt; using namespace std;...

Как преобразовать число float в int без потери данных?
Здравствуйте, форумчане. Столкнулась с такой проблемой: для работы программы требуется целое число,...

float double int
Доброй ночи, препод совсем запарил, то ему не так, то ему не эдак. // 8.2.cpp: определяет точку...

Как преобразовать дробную часть числа типа double в int
Есть дробное число, например Z = 123,456 нужно разбить его на два целых числа int I = 123 int...

14
_Ivana
3241 / 1879 / 235
Регистрация: 01.03.2013
Сообщений: 5,116
Записей в блоге: 16
22.09.2014, 13:53 2
Примерно в этом направлении Как переписать строку из char buf[20] в wchar_t buf1[20]; ?
1
GENDALF_ISTARI
12 / 29 / 19
Регистрация: 20.08.2013
Сообщений: 715
22.09.2014, 16:33  [ТС] 3
не помогло проверил там ошибки выскакивают
0
GENDALF_ISTARI
12 / 29 / 19
Регистрация: 20.08.2013
Сообщений: 715
22.09.2014, 16:54  [ТС] 4
использовал метод конвентации

C++
1
2
3
4
5
6
wchar_t* convert_char_to_wchar_t(const char* c, size_t max)
{
  wchar_t* w = new wchar_t[max];
  mbstowcs(w,c,max);
  return w;
}

вот участок кода что применил из главного int main ()
C++
1
2
3
4
5
6
7
8
sum_title=name_title+version;
const char* info_tit=sum_title.c_str();
wchar_t* title_cov=convert_char_to_wchar_t(info_tit,50);
 
LPWSTR title_programm=(LPWSTR)title_cov;
 
//ну и на титулку вешаю
color_title(title_programm);
Вывело на фото видно
почти приблежоно ))))
но все равно ероглифы
0
Миниатюры
Как преобразовать все int,float,double в строки LPWSTR, LPCTSTR  
22.09.2014, 16:54
Renji
2191 / 1614 / 489
Регистрация: 05.06.2014
Сообщений: 4,673
22.09.2014, 16:59 5
как исправить ошибку ???
Не возвращать ссылки в никуда.
C++
1
2
3
4
5
6
7
LPWSTR float_to_LPWSTR (float conv)
{
    char buff[100];//локальный объект
    (buff, "%d", conv);//НЕХ
    LPWSTR version =(LPWSTR)buff;//ссылка на локальный объект
    return version;//который после return не существует
}
0
GENDALF_ISTARI
12 / 29 / 19
Регистрация: 20.08.2013
Сообщений: 715
22.09.2014, 17:11  [ТС] 6
дак причем тут не возвращай ?
я тестил сам текст

C++
1
2
wchar_t* title_cov=" Программа ываыва sdfsdf 1313"; // пример 
LPWSTR title_programm=(LPWSTR)title_cov;
и работает
но когда начинаю применять методы конвентации
вот и проблема
вот
wchar_t* title_cov=" Программа ываыва sdfsdf 1313"; // пример
LPWSTR title_programm=(LPWSTR)title_cov;
C++
1
2
wchar_t* title_cov=convert_char_to_wchar_t(info_tit,50); // пример 
LPWSTR title_programm=(LPWSTR)title_cov;
метод он не правильный я его тестил он и выводит ероглифы
не верно конвентирует
C++
1
2
3
4
5
6
wchar_t* convert_char_to_wchar_t(const char* c, size_t max)
{
  wchar_t* w = new wchar_t[max];
  mbstowcs(w,c,max);
  return w;
}
Добавлено через 15 секунд
дак причем тут не возвращай ?
я тестил сам текст

C++
1
2
wchar_t* title_cov=" Программа ываыва sdfsdf 1313"; // пример 
LPWSTR title_programm=(LPWSTR)title_cov;
и работает
но когда начинаю применять методы конвентации
вот и проблема
вот
wchar_t* title_cov=" Программа ываыва sdfsdf 1313"; // пример
LPWSTR title_programm=(LPWSTR)title_cov;
C++
1
2
wchar_t* title_cov=convert_char_to_wchar_t(info_tit,50); // пример 
LPWSTR title_programm=(LPWSTR)title_cov;
метод он не правильный я его тестил он и выводит ероглифы
не верно конвентирует
C++
1
2
3
4
5
6
wchar_t* convert_char_to_wchar_t(const char* c, size_t max)
{
  wchar_t* w = new wchar_t[max];
  mbstowcs(w,c,max);
  return w;
}
Добавлено через 22 секунды
дак причем тут не возвращай ?
я тестил сам текст

C++
1
2
wchar_t* title_cov=" Программа ываыва sdfsdf 1313"; // пример 
LPWSTR title_programm=(LPWSTR)title_cov;
и работает
но когда начинаю применять методы конвентации
вот и проблема
вот
wchar_t* title_cov=" Программа ываыва sdfsdf 1313"; // пример
LPWSTR title_programm=(LPWSTR)title_cov;
C++
1
2
wchar_t* title_cov=convert_char_to_wchar_t(info_tit,50); // пример 
LPWSTR title_programm=(LPWSTR)title_cov;
метод он не правильный я его тестил он и выводит ероглифы
не верно конвентирует
C++
1
2
3
4
5
6
wchar_t* convert_char_to_wchar_t(const char* c, size_t max)
{
  wchar_t* w = new wchar_t[max];
  mbstowcs(w,c,max);
  return w;
}
так у кого есть альтернатива скиньте ?
0
Renji
2191 / 1614 / 489
Регистрация: 05.06.2014
Сообщений: 4,673
22.09.2014, 17:15 7
" Программа ываыва sdfsdf 1313" L" Программа ываыва sdfsdf 1313".
но когда начинаю применять методы конвентации
Это был не метод конвертации. Это было "открой utf8 (или что там у вас) текст как utf16". Разумеется, если принудительно указать неверную кодировку, на выходе выйдет чушь.
1
GENDALF_ISTARI
12 / 29 / 19
Регистрация: 20.08.2013
Сообщений: 715
22.09.2014, 17:31  [ТС] 8
так скинь тексты
примеры как что и как
и кадировки
а то функции напичкали
не понятно что и как значит

в C# сразу поток StreamRead lallala=new StreamRead ("файл.формат", false, GetEncoding.форматы текстов)
и там выбераешь utf8, utf16, defalt и так далие

тут на С++ не пойму как различать
0
Renji
2191 / 1614 / 489
Регистрация: 05.06.2014
Сообщений: 4,673
22.09.2014, 18:20 9
Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
тут на С++ не пойму как различать
В теории - пнув imbue потока и передав ему локаль с правильным фасетом. На практике - стандартный фасет есть только для преобразования utf8-utff16 и только в C++11. Так что boost::locale::conv::between (boost надо ставить отдельно).
1
GENDALF_ISTARI
12 / 29 / 19
Регистрация: 20.08.2013
Сообщений: 715
22.09.2014, 19:14  [ТС] 10
это все хорошо но моя проблема иная
мне нужно просто
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
float version=1.1 // указывать версию
string str1="Программа";
string str2="";
string sumstr="";
 
str2=convert_float_to_string(version); превратить flat числа в строки
sumstr=str1+str2;  // сложить строки
 
wchar_t titl_cov=convert_string_to_wchar_t(sumstr); // сконвертировать приблизить LPWSTR  к титулки 
 
LPWSTR title=(LPWSTR)titl_cov; // отдать это LPWSTR 
 
color_title(title); // повесить весь этот текст на консоль
фишка в том чтоб в float просто указывать версию, просто число
и это отображало версию программы
не выходит
0
Renji
2191 / 1614 / 489
Регистрация: 05.06.2014
Сообщений: 4,673
22.09.2014, 20:13 11
мне нужно просто
Еще раз, медленно. 1) Ставить L перед кавычками. 2) Использовать wstring вместо string. И все будет сразу в 16 битовой кодировке, без всяких преобразований.
0
GENDALF_ISTARI
12 / 29 / 19
Регистрация: 20.08.2013
Сообщений: 715
22.09.2014, 23:07  [ТС] 12
это все хорошо
так а как же мне float преоброзовать в wstring
и сложить потом их
и получу титулку с версияй)))

C++
1
2
3
4
5
6
7
8
9
10
11
float program_version=1.1;
wstring name_title=L"Упаковка распаковка ресурсов Сталкера ";//"Упаковка распаковка ресурсов Сталкира ";
wstring sum_title=L"";
wstring version;
char* con_ver=float_to_charstr(program_version);
wchar_t* ver=convert_char_to_wchar_t(con_ver,50);
version=con_ver;
 
sum_title=name_title+version; // сложить текст и версию с float
LPCWSTR title_programm=sum_title.c_str();
color_title(title_programm); // на титулку)))
вот функции что превращают
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
wchar_t* convert_char_to_wchar_t(const char* c, size_t max)
{
  wchar_t* w = new wchar_t[max];
  mbstowcs(w,c,max);
  return w;
}
 
char* float_to_charstr (float conv)
{
    char *s;
    //stringstream iostr;
    //iostr<<num;
    //iostr>>s;
    sprintf(s,"%f",conv);
 
    return s;
}
короче не получаеться float в wstring превратить
пробывал прямо
version=program_version;
то при сложении
текст есть программки но сама версия float нету

Добавлено через 14 минут
Привет спасибо
я сам разобрался
вот преоброзовал потоком библиотеки
<sstream>

C++
1
2
3
4
5
/////////float_to_wstring/////////
wstringstream wss;
wss<<program_version;
version=wss.str();
/////////float_to_wstring/////////
это взял с этого ресурса
http://bytes.com/topic/c/answers/164...char_t-unicode

Спасибо за Иницыативу

Добавлено через 10 секунд
Привет спасибо
я сам разобрался
вот преоброзовал потоком библиотеки
<sstream>

C++
1
2
3
4
5
/////////float_to_wstring/////////
wstringstream wss;
wss<<program_version;
version=wss.str();
/////////float_to_wstring/////////
это взял с этого ресурса
http://bytes.com/topic/c/answers/164...char_t-unicode

Спасибо за Иницыативу
0
GENDALF_ISTARI
12 / 29 / 19
Регистрация: 20.08.2013
Сообщений: 715
22.09.2014, 23:11  [ТС] 13
Вот результат на фото
0
Миниатюры
Как преобразовать все int,float,double в строки LPWSTR, LPCTSTR  
Renji
2191 / 1614 / 489
Регистрация: 05.06.2014
Сообщений: 4,673
22.09.2014, 23:59 14
вот преоброзовал потоком библиотеки
to_wstring(version). Но мы не ищем легких путей.
1
GENDALF_ISTARI
12 / 29 / 19
Регистрация: 20.08.2013
Сообщений: 715
23.09.2014, 03:44  [ТС] 15
беру на ус

Добавлено через 18 секунд
to_wstring(version)
0
23.09.2014, 03:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2014, 03:44

LONG VS DOUBLE / INT VS FLOAT
Всем доброго времени суток! Объясните пожалуйста почему при следующем коде #include &lt;iostream&gt;...

Зачем использовать TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR?
Почитал статью о макросах TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR. И меня возникло пару вопросов. 1....

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int)
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй...


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

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

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