相关疑难解决方法(0)

如何在C++中对字符串进行标记?

Java有一个方便的拆分方法:

String str = "The quick brown fox";
String[] results = str.split(" ");
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法在C++中执行此操作?

c++ string split tokenize

400
推荐指数
18
解决办法
53万
查看次数

Boost.Fusion运行时切换

我正在从文件中读取对象的类型:

enum class type_index { ... };
type_index typeidx = read(file_handle, type_index{});
Run Code Online (Sandbox Code Playgroud)

根据类型索引,我想创建一个类型(在可能的类型列表中),并使用它做一些通用的(每种类型的相同通用代码):

std::tuple<type1, type2, ..., typeN> possible_types;

boost::fusion::for_each(possible_types, [&](auto i) {
  if (i::typeidx != typeidx) { return; }
  // do generic stuff with i
});
Run Code Online (Sandbox Code Playgroud)

那是:

  • 我有不同类型的通用代码,
  • 我希望编译器为每种类型生成特定的代码,
  • 我只知道运行时需要哪种类型,以及
  • 我想只执行该单一类型的代码.

这感觉就像switch具有运行时条件的语句,但是在编译时生成"案例".特别是,这根本不是一个for_each声明(我没有为vector,tuple,list中的所有元素做任何事情,而只是对单个元素做任何事情).

有更好的方式来表达/写出这个成语吗?(例如mpl::vector,std::tuple对于可能的类型使用an 而不是a ,使用与for_each算法不同的东西,...)

c++ metaprogramming boost-fusion

13
推荐指数
1
解决办法
1455
查看次数

标签 统计

c++ ×2

boost-fusion ×1

metaprogramming ×1

split ×1

string ×1

tokenize ×1