Как мне написать в определенную позицию в массиве wstring? - PullRequest
0 голосов
/ 26 января 2019

У меня есть карта с именем wstring, и я хочу записать в определенную позицию в этом массиве wstring.Я могу читать символы с определенных позиций, но я не знаю, как писать в эту строку, кроме как добавить к ней.

float fPlayerX;
float fPlayerY;
int nMapWidth = 16;
int nMapHeight = 16;
bool GotO;

wstring map

map += L"################";
map += L"#G.............X";
map += L"#..............#";
map += L"#..............#";
map += L"#..............#";
map += L"#..............#";
map += L"#..............#";
map += L"#..............#";
map += L"#..............#";
map += L"#..............#";
map += L"#..............#";
map += L"#..............#";
map += L"#......O.......#";
map += L"#..............#";
map += L"#..............#";
map += L"################";

if (map.c_str()[(int)fPlayerX * nMapWidth + (int)fPlayerY] == 'O')
{
    // Pick up O
    if (GotO == false)
    { 
        // WRITE A "." TO WHERE THE O IS RIGHT NOW
    }
} 

Если я попытаюсь

map[(int)fPlayerX * nMapWidth + (int)fPlayerY] = L".";

или

map[(int)fPlayerX * nMapWidth + (int)fPlayerY] = ".";

Я получаю

Error   C2440   '=': cannot convert from 'const wchar_t [2]' to 'wchar_t'

1 Ответ

0 голосов
/ 26 января 2019

Вы можете использовать map[index] = '.', где индекс - это вычисленная вами позиция.

Будьте осторожны, чтобы использовать ' вместо " !. Выражение '.' имеет тип char, тогда как "." фактически означает массив {'.', '\0'} и имеет тип char const *.

...