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

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

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

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

06.07.2012, 05:37. Просмотров 492. Ответов 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 всё отлично...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2012, 05:37     Некорректный вывод текста
Посмотрите здесь:

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
06.07.2012, 06:03     Некорректный вывод текста #2
как выводите ?

Так ?
C++
1
printf("%ws", buffer);
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";
, то он правильно рисуется (не иероглифами)
MrCold
854 / 752 / 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;
}
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
Case-Man
86 / 32 / 1
Регистрация: 02.01.2012
Сообщений: 321
06.07.2012, 09:05     Некорректный вывод текста #6
Цитата Сообщение от MrCold Посмотреть сообщение
еще ошибка возврат
локальной переменной
Вот тут корень всех проблем. Переменная на стеке затирается раньше, чем до нее доберется DX
Проще буфер снаружи в процедуру передавать.
Ну, или static, но это не самое красивое решение.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 16:16     Некорректный вывод текста
Еще ссылки по теме:

Некорректный вывод в файл - C++
Добрый день! При выводе таблицы умножения в файл числа выводятся некорректно. Заранее спасибо! #include <iostream> #include...

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

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

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


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

Или воспользуйтесь поиском по форуму:
Sheppard
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
06.07.2012, 16:16  [ТС]     Некорректный вывод текста #7
Спасибо большое, да вы права проблема была именно с буфером!
Yandex
Объявления
06.07.2012, 16:16     Некорректный вывод текста
Ответ Создать тему
Опции темы

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