c++ - libcurl (curlpp) 中的换行符问题

标签 c++ libcurl linefeed curlpp

我目前正在使用 curlpp 执行 HTTP 查询,但 curlpp 报告 URL 中存在非法字符。我已经将 URL 问题缩小到一个从配置文件中读取的变量(一行,它只包含所需的信息)。另一个奇怪的事情是,这只发生在 Fedora x64bits 安装上(我没有尝试过其他 x64bits 发行版)。在我的两台开发机器上,它运行得非常好(Ubuntu 和 OpenSuse,32 位)。我已经尝试打印从文件中读取的字符的 ASCII 代码,一切看起来都非常正常,但是,字符串末尾有一个换行符。现在,这个字符出现在所有系统中,但在Fedora 系统上它被报告为非法字符。用空终止字符替换此字符可使程序再次完美运行。

我想知道是否有一个选项可以强制 curlpp 忽略换行符。我还尝试使用 curl_easy_escape 函数转义字符串,但它会将换行符转换为百分比编码 %0A。这反过来又不会被 HTTP 服务器识别为现有 URL(它会输出 404 错误)。

有没有人遇到过这个问题?是否可以忽略此字符,或者只是替换它是最好的方法?

预先感谢您的帮助!

最好的问候,

PS:在所有系统中,库版本都是相同的(这有点奇怪)。 curlpp的版本是(0.7.3)

编辑:由于大众需求,我发布了从文件中读取变量的代码。

  std::ifstream keyfile (pathToFile.c_str());
  std::stringstream buffer;
  buffer << keyfile.rdbuf ();

最佳答案

您读取 key 文件的方式会将所有内容转储到您的 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;

关于c++ - libcurl (curlpp) 中的换行符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31451301/

相关文章:

PHP fatal error : Uncaught GuzzleHttp\Exception\RequestException: cURL error 2: easy handle already used in multi handle

c - 带有 libcrypto 和 libcurl 的 OCSP

javascript - 跳过相同的字符串值

python - Python写换行时避免写回车 '\r'

unicode - 如何在 Rust 中检查字符是否为 Unicode 换行符(不仅是 ASCII)?

c++ - 需要一个 c++ 编译器来处理库(boost,...)

c++ - 对逗号在 C/C++ 中的工作方式有些困惑

c++ - 为什么#pragma once 不防范多个非 constexpr 定义?

c++ - OpenGL C++ 我如何获得随机值?

c++ - 您应该通过命令行使用 curl 还是包含库?