Я пытаюсь добавить вставку переменной в 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*â
"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);
std::string
неявно преобразуется в char*
, Вам нужно использовать c_str
,
В идеале, вы должны полностью работать со строками (не char *) в вашем приложении, вплоть до того момента, когда функция API требует char *, и в этот момент вы вызываете c_str
в строке, чтобы получить const char * для функции, которую вы вызываете.
Вы используете num
где он неинициализирован в третьей строке. Может быть, вы хотите:
std::string num;
std::string msg = "GET /index.php?num=" + num + " HTTP/1.1\nhost: domain.com\n\n";