libcurl中的换行符问题(curlpp)

时间:2015-07-16 10:10:18

标签: c++ libcurl linefeed curlpp

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

我想知道是否有强制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 ();

1 个答案:

答案 0 :(得分:0)

您阅读密钥文件的方式是将所有内容转储到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;