Проще всего использовать std :: stringstream для такого рода вещей. Я добавил его в рассматриваемый цикл:
#include <sstream>
и:
while (!pq[pqi].empty())
{
// get the current node w/ the highest priority
// from the list of open nodes
n0 = new node(pq[pqi].top().getxPos(), pq[pqi].top().getyPos(),
pq[pqi].top().getLevel(), pq[pqi].top().getPriority());
x = n0->getxPos(); y = n0->getyPos();
pq[pqi].pop(); // remove the node from the open list
open_nodes_map[x][y] = 0;
// mark it on the closed nodes map
closed_nodes_map[x][y] = 1;
// quit searching when the goal state is reached
//if((*n0).estimate(xFinish, yFinish) == 0)
if (x == xFinish && y == yFinish)
{
// generate the path from finish to start
// by following the directions
std::stringstream sstr;
string path = "";
while (!(x == xStart && y == yStart))
{
j = dir_map[x][y];
c = '0' + (j + dir / 2) % dir;
sstr << (j + dir / 2) % dir << ",";
path = c + path;
x += dx[j];
y += dy[j];
}
// garbage collection
delete n0;
// empty the leftover nodes
while (!pq[pqi].empty()) pq[pqi].pop();
path = sstr.str();
return path;
}
Обратите внимание, что я просто назначил значение sstr для вашего path
в конце петля. Я не вижу, какие цифры вы ищете, но это нечто другое.
Еще одна попытка: взгляните на http://msdn.microsoft.com/en-us/library/system.security.principal.windowsbuiltinrole.aspx . ... и перейти к образцу. Там вы можете использовать члены перечисления BuiltIn, чтобы получить правильно написанное имя группы (через API) ... тогда оно должно быть независимым от языка.
HTH, Томас
Хммм, я бы не использовал имя группы непосредственно в своем коде (жестко закодировано). Попробуйте абстрагироваться от такой роли, как «HelloWorldAdmin», и настройте роль в app.config. Этот должен быть сопоставлен с группой пользователей. Это позволит вашим пользователям / администраторам выбрать группу и сопоставить ее с ролью (например, в случае, если администраторы приложения не являются администраторами AD). Взгляните на http://msdn.microsoft.com/en-us/library/ms998314.aspx . НТН.
Вы абсолютно уверены, что в немецкоязычной системе «BUILTIN \ Administrators» не будет работать? Я бы даже подумал, что эти основные имена групп должны быть действительными. Да, в ваших инструментах администратора будет отображаться «Vordefiniert \ ADministratoren» - но я бы удивился, если бы атрибут PrincipalPermission зависел от языка.
MArc
Вы можете использовать императивную версию и динамически преобразовывать нейтральную по отношению к языку форму (например, SID) в локализованную форму (может быть через SecurityIdentifier.Translate).
Хорошо известные SID перечислены в КБ 243330.
Использование try / except - лучший способ проверить существование переменной. Но почти наверняка есть лучший способ сделать то, что вы делаете, чем установка / тестирование глобальных переменных.
Например, если вы хотите инициализировать переменную уровня модуля при первом вызове какой-либо функции, вы