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

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

Войти
Регистрация
Восстановить пароль
 
Sheppard
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
#1

Некорректный вывод текста - C++

06.07.2012, 05:37. Просмотров 511. Ответов 6
Метки нет (Все метки)

Здравствуйте! Есть такая функция:
C++
1
2
3
4
5
6
7
8
9
10
11
wchar_t* GetPlayerInfo()
{
    wchar_t buffer[64];
    .......
    int player_scores = GetScores(player);
    int player_level = GetLevel(player);
    int player_kills = GetKills(player);
    int player_deaths = GetDeaths(player);
    swprintf_s(buffer, L"Level: %d / Scores: %d / Kills: %d / Deaths: %d", player_level, player_scores, player_kills, player_deaths);
    return buffer;
}
Результат отрисовки текста (DX11, шрифт Arial):
 Комментарий модератора 
Создайте изображение, которое видно не только под микроскопом, и прикрепите его к сообщению (расширенный режим -> управление вложениями)

Когда просто вывожу текст с помощью MessageBoxW всё отлично...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2012, 05:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Некорректный вывод текста (C++):

Некорректный вывод текста - C++
Вот учусь писать функции, и наткнулся на проблемку. После написание и компилирования вот этой функции, вместо нужный мне "Введите пароль" и...

Некорректный ввод русского текста - C++
Всем привет..столкнулся с такой проблемой. Есть программа которая считывает с файла текст на русском языке. Я его спокойно могу...

Некорректный вывод - C++
Проблема очень странная, впервые с таким сталкиваюсь. Итак, вводятся сначала 3 числа через пробел (кол-во вводов, ширина открытки и высота)...

Некорректный вывод - C++
Доброго времени суток Суть такова: есть прога, выполняющая действия с односвязным списком. Первоначально, инфа в список подаётся из...

Некорректный вывод - C++
Почему-то все выводимые y равны 1. #include "stdafx.h" #include <iostream> #include <math.h> #include <conio.h> #include...

Некорректный вывод - C++
Не получается вывести имена файлов (какая-то белиберда на выходе). И не могу понять, как обратиться к содержимому файла #include...

6
MrCold
856 / 754 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
06.07.2012, 06:03 #2
как выводите ?

Так ?
C++
1
printf("%ws", buffer);
0
Sheppard
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
06.07.2012, 06:34  [ТС] #3
Цитата Сообщение от MrCold Посмотреть сообщение
как выводите ?

Так ?
C++
1
printf("%ws", buffer);
Я рисую:
C++
1
DrawText(GetPlayerInfo(), 16, 0, 0, 0xff0099ff, 0);
P.S. Когда я в GetPlayerInfo возвращаю простой текст, например -
C++
1
return L"Test string";
, то он правильно рисуется (не иероглифами)
0
MrCold
856 / 754 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
06.07.2012, 07:06 #4
Sheppard, предложу только заменить только все широкие символы
на обычный char, а больше и не знаю что делать , да еще ошибка возврат
локальной переменной, надо static сделать
вот так
C++
1
2
3
4
5
6
7
8
9
10
11
char* GetPlayerInfo()
{
   static char buffer[64];
 
    int player_scores = GetScores(player);
    int player_level = GetLevel(player);
    int player_kills = GetKills(player);
    int player_deaths = GetDeaths(player);
    sprintf_s(buffer, "Level: %d / Scores: %d / Kills: %d / Deaths: %d", player_level, player_scores, player_kills, player_deaths);
    return buffer;
}
0
Sheppard
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
06.07.2012, 07:26  [ТС] #5
Цитата Сообщение от MrCold Посмотреть сообщение
Sheppard, предложу только заменить только все широкие символы
на обычный char, а больше и не знаю что делать , да еще ошибка возврат
локальной переменной, надо static сделать
вот так
C++
1
2
3
4
5
6
7
8
9
10
11
char* GetPlayerInfo()
{
   static char buffer[64];
 
    int player_scores = GetScores(player);
    int player_level = GetLevel(player);
    int player_kills = GetKills(player);
    int player_deaths = GetDeaths(player);
    sprintf_s(buffer, "Level: %d / Scores: %d / Kills: %d / Deaths: %d", player_level, player_scores, player_kills, player_deaths);
    return buffer;
}
Для рисования текста в DirectX 11 используется WCHAR
0
Case-Man
166 / 106 / 21
Регистрация: 02.01.2012
Сообщений: 596
06.07.2012, 09:05 #6
Цитата Сообщение от MrCold Посмотреть сообщение
еще ошибка возврат
локальной переменной
Вот тут корень всех проблем. Переменная на стеке затирается раньше, чем до нее доберется DX
Проще буфер снаружи в процедуру передавать.
Ну, или static, но это не самое красивое решение.
0
Sheppard
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
06.07.2012, 16:16  [ТС] #7
Спасибо большое, да вы права проблема была именно с буфером!
0
06.07.2012, 16:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 16:16
Привет! Вот еще темы с ответами:

Структуры, некорректный вывод - C++
Задание: 1. Описать структуру с именем STUDENT, содержащую следующие поля: • фамилия и инициалы; • номер группы; • успеваемость...

Некорректный вывод в файл - C++
Добрый день. Реализован алгоритм Хаффмана: #include "stdafx.h" using namespace std; class Node { public: int a;...

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

Некорректный вывод программы - C++
Почему после вызова метода get() переменная all (количество сидячих мест в поезде) всегда равна одному и тому же значению 3452816845? ...


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

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

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