Проблема с символом подачи строки в 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 2

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;