如何在C++中实现以下(Python伪代码)?
if argv[1].startswith('--foo='):
foo_value = int(argv[1][len('--foo='):])
Run Code Online (Sandbox Code Playgroud)
(例如,如果argv[1]是--foo=98,则foo_value是98.)
更新:我对调查Boost犹豫不决,因为我只是想对一个简单的小命令行工具进行一个非常小的改动(我宁愿不必学习如何链接并使用Boost作为一个小的更改).
std :: string size()是否为O(1)操作?
我正在使用的STL的实现是VC++内置的
我有一个std :: map,我想使用子字符串搜索一个键.例如
#include <iostream>
#include <map>
#include <string>
using namespace std;
typedef std::map<std::string, std::string> TStrStrMap;
typedef std::pair<std::string, std::string> TStrStrPair;
int main(int argc, char *argv[])
{
TStrStrMap tMap;
tMap.insert(TStrStrPair("John", "AA"));
tMap.insert(TStrStrPair("Mary", "BBB"));
tMap.insert(TStrStrPair("Mother", "A"));
tMap.insert(TStrStrPair("Marlon", "C"));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想搜索包含子串"Marl"而不是"Marlon"的位置.可能吗?怎么样?
编辑:没有加速库!
我有一张数据图;关键是std::string。我想对它执行二进制搜索,但是我不能只使用std::map::find(),因为我将只提供一部分密钥。
假设我有一张带有以下按键的地图:
["abc"] -> ...
["efg"] -> ...
["ijk"] -> ...
["iik"] -> ...
Run Code Online (Sandbox Code Playgroud)
我想使用进行搜索,比如说仅提供"i",搜索应该返回:
[“ ijk”]-> ...,[“ iik”]-> ...
这可能吗?我尝试使用迭代器来执行此操作,但由于无法将它们视为索引而失败了。
注意:由于其他原因,我将数据保留在地图中,所以我不想将其更改为其他数据结构。
c++ ×5
containers ×2
dictionary ×2
stl ×2
string ×2
c++11 ×1
count ×1
function ×1
parsing ×1
search ×1
startswith ×1
stdmap ×1
stdstring ×1
substring ×1
visual-c++ ×1