C++ Boost';有任何原因引起警告吗?
我的代码中有以下行:C++ Boost';有任何原因引起警告吗?,c++,boost,C++,Boost,我的代码中有以下行: std::vector<std::string> lines; boost::split(lines, output, boost::is_any_of("\n")); 看起来像是boost中的内部键入错误? 以前有人遇到过这种情况吗 注:使用gcc版本5.3.1 20160406(Red Hat 5.3.1-6)编译时,设置了大多数警告标志,并且-Werror 注2:正如@sehe所显示的,这确实是一个提升问题。 那么让我来改变这个问题——有人知道这方面的解
std::vector<std::string> lines;
boost::split(lines, output, boost::is_any_of("\n"));
看起来像是boost中的内部键入错误?
以前有人遇到过这种情况吗
注:使用gcc版本5.3.1 20160406(Red Hat 5.3.1-6)编译时,设置了大多数警告标志,并且-Werror
注2:正如@sehe所显示的,这确实是一个提升问题。
那么让我来改变这个问题——有人知道这方面的解决方法吗
谢谢
(GCC)和(叮当声)
#包括
#包括
#包括
#包括
#包括
int main(){
std::字符串输出;
std::矢量线;
boost::split(行、输出、boost::是(“\n”)中的任意一个);
}
这应该报告给Boost算法的维护人员(请参阅Boost邮件列表或)鉴于此问题没有更多的活动,我会说“是”——这是一个Boost问题。它很容易用@sehe的MCVE复制。 显然,用严格的警告和Werror标志编译boost是不可能的 根据我的解决方案,我有一个相当简单的用例,并且实现了我自己的简单版本的split
inline std::vector<std::string> Split(const std::string &str, char delim)
{
std::vector<std::string> out;
std::stringstream ss(str);
std::string item;
while (std::getline(ss, item, delim)) {
out.push_back(item);
}
return out;
}
inline std::vector Split(const std::string&str,char delim)
{
std::向量输出;
std::stringstream ss(str);
std::字符串项;
while(std::getline(ss,item,delim)){
向外。推回(项目);
}
返回;
}
什么是输出
?什么是行
,真的吗?因为你怎么分一个。。。字符串集合?(换句话说,制作一个or)使用boost编译一些东西时,如果没有boost胆量引起的警告,几乎是不可能的。似乎有人忘记在std::size\u t size=::boost::distance(Range)中使用static_cast代码>@VTT这是一个奇怪的说法。我猜你正在使用MSVC,在这种情况下,你可以包含一个标题来禁用这些警告。还有,你再现了错误吗?你有一个SSCCE/MVCE要谴责吗?@不朽你能做一个或@sehe我想说的是,MSVC有点放纵(而且通常在boost中用#pragma警告来压制),发出的警告比clang和gcc少。你没有添加-Wsign conversion
@VTT-Ah。你说得很对。OP可能特别提到了这一点。是的,我同意这是一个需要报告的问题。
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/predicate.hpp>
#include <boost/algorithm/string.hpp>
#include <vector>
#include <string>
int main() {
std::string output;
std::vector<std::string> lines;
boost::split(lines, output, boost::is_any_of("\n"));
}
inline std::vector<std::string> Split(const std::string &str, char delim)
{
std::vector<std::string> out;
std::stringstream ss(str);
std::string item;
while (std::getline(ss, item, delim)) {
out.push_back(item);
}
return out;
}