C ++ Linux Sockets добавление переменной в char * msg

Я пытаюсь добавить вставку переменной в send ().

вот код:

string num;

// + num + is the reason for the error. Any work around or suggestions?
char *msg = "GET /index.php?num=" + num + " HTTP/1.1\nhost: domain.com\n\n";

int len;
ssize_t bytes_sent;
len = strlen(msg);
bytes_sent = send(socketfd, msg, len, 0);

Я получаю ошибку:

test.cpp: In function âint main()â:
test.cpp:64: error: cannot convert âstd::basic_string<char, std::char_traits<char>,
std::allocator<char> >â to âchar*â in initialization

—редактировать—

Я пытался исправить это с помощью msg.c_str

cout << "send()ing message..."  << endl;
string msg = "GET /index.php?num=" + num + " HTTP/1.1\nhost: domain.com\n\n";
int len;
ssize_t bytes_sent;
len = msg.lenght(); //updated to this and still gives me an error.
bytes_sent = send(socketfd, msg.c_str, len, 0);

Теперь это дает мне ошибку:

error: argument of type âconst char* (std::basic_string<char, std::char_traits<char>,
std::allocator<char> >::)()constâ does not match âconst char*â

2

Решение

"stuff" + num + "more stuff" не делает то, что вы ожидаете. Даже если бы вы были конвертировать str к указателю на символ, и даже если C ++ позволит вам добавлять указатели на символы вместе, это в конечном итоге приведет к совершенно неправильным действиям.

(Для справки, C ++ не позвольте вам добавить указатели вместе, потому что результат не имеет никакого смысла. Указатели по-прежнему являются просто числами, и добавление двух указателей на символы в основном составит 0x59452448 + 0x10222250 или что-то в этом роде, которое вернет вам указатель на какое-то место, которое, вероятно, еще даже не существует …)

Попробуй это:

string msg = string("GET /index.php?num=") + num + " HTTP/1.1\nhost: domain.com\n\n";
ssize_t bytes_sent = send(socketfd, msg.c_str(), msg.size(), 0);
3

Другие решения

std::string неявно преобразуется в char*, Вам нужно использовать c_str,

1

В идеале, вы должны полностью работать со строками (не char *) в вашем приложении, вплоть до того момента, когда функция API требует char *, и в этот момент вы вызываете c_str в строке, чтобы получить const char * для функции, которую вы вызываете.

1

Вы используете num где он неинициализирован в третьей строке. Может быть, вы хотите:

std::string num;
std::string msg = "GET /index.php?num=" + num + " HTTP/1.1\nhost: domain.com\n\n";
1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector