В C++ / Windows, как я получаю сетевое название компьютера, я иду?

map не является особенно питоническим. Я бы рекомендовал вместо этого использовать списки:

map(f, iterable)

в основном эквивалентен:

[f(x) for x in iterable]

map сам по себе не может декартово произведение, так как длина его выходного списка всегда совпадает с его списком ввода. Вы можете тривиально сделать декартово произведение с пониманием списка:

[(a, b) for a in iterable_a for b in iterable_b]

Синтаксис немного запутанный - это в основном эквивалентно:

result = []
for a in iterable_a:
    for b in iterable_b:
        result.append((a, b))
7
задан prakash 25 August 2008 в 18:10
поделиться

3 ответа

7
ответ дан 6 December 2019 в 10:55
поделиться

Существует больше чем одна альтернатива:

a. Используйте GetComputerName Win32 (), как предложил Stu.
Пример: http://www.techbytes.ca/techbyte97.html
ИЛИ
b. Используйте функцию gethostname () под Winsock. Эта функция является кросс-платформенной и может помочь, если Ваше приложение будет работавшим другие платформы помимо Windows.
Ссылка MSDN: http://msdn.microsoft.com/en-us/library/ms738527 (по сравнению с 85) .aspx
ИЛИ
c. Используйте функцию getaddrinfo ().
Ссылка MSDN: http://msdn.microsoft.com/en-us/library/ms738520 (По сравнению с 85) .aspx

9
ответ дан 6 December 2019 в 10:55
поделиться

Я согласовываю с Паскалем при использовании gethostname winsock () функцию.Вот:

#include <winsock2.h> //of course this is the way to go on windows only

#pragma comment(lib, "Ws2_32.lib")

void GetHostName(std::string& host_name)
{
    WSAData wsa_data;
    int ret_code;

    char buf[MAX_PATH];

    WSAStartup(MAKEWORD(1, 1), &wsa_data);
    ret_code = gethostname(buf, MAX_PATH);

    if (ret_code == SOCKET_ERROR)
        host_name = "unknown";
    else
        host_name = buf;


    WSACleanup();

}
1
ответ дан 6 December 2019 в 10:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: