Проблема с символом подачи строки в libcurl (curlpp)
В настоящее время я использую curlpp для выполнения HTTP-запроса, но curlpp сообщает, что в URL-адресе есть запрещенные символы. Я сузил проблему URL до переменной, которая считывается из файла конфигурации (одна строка, она просто содержит необходимую информацию). Еще одна странная вещь заключается в том, что это происходит только на установке Fedora x64bits (я не пробовал другие дистрибутивы x64bits). На моих двух машинах разработки он работает отлично (Ubuntu и OpenSuse, 32bits). Я пробовал печатать код ASCII символов считывается из файла и все выглядит совершенно нормально, однако в конце строки есть символ подачи строки. Теперь этот символ встречается во всех системах, но в системе Fedora он сообщается как незаконный символ. Замена этого символа символом завершения null снова делает программу идеально работающей.
Мне было интересно, есть ли возможность заставить curlpp игнорировать символ подачи строки. Я также пытался сбежать от строка с функцией curl_easy_escape, но она преобразует символ перевода строки в процентную кодировку %0A.это, в свою очередь, не распознается HTTP-сервером как существующий URL (он выдает ошибку 404).
Кто-нибудь сталкивался с этой проблемой раньше? Можно ли игнорировать этот характер, или лучше всего просто заменить его?
Заранее спасибо за вашу помощь!
С наилучшими пожеланиями,
PS: во всех системах версии библиотек одинаковы (что является несколько странно). Версия curlpp является (0.7.3)
EDIT: из-за массового спроса я публикую код, который считывает переменную из файла.
std::ifstream keyfile (pathToFile.c_str());
std::stringstream buffer;
buffer << keyfile.rdbuf ();
1 ответ:
То, как Вы читаете ключевой файл, будет сбрасывать все в ваш
std::stringstream
, включая символ конца строки.Одна вещь, которую вы можете сделать, это использовать
>>
, который будет читать первое целое слово, которое он находит, пропуская ведущие пробелы:std::ifstream keyfile(pathToFile.c_str()); std::string api_key; // will skip leading spaces and only read up to the next space // or end of line keyfile >> api_key;