参考 《C++ Primer Plus》中文版 P870

#include <map>
#include <fstream>
#include <iostream>
#include <string> using namespace std; string getData( string key, map<string, string> & data ); //using namespace std;
int main(int argc, char** argv )
{
map<string, string> data;
string filename = "./parameters.txt";
ifstream fin( filename.c_str() );
/*
c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.
这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。
*/
if (!fin)//文件不存在
{
cerr<<"parameter file does not exist."<<endl;//报错
return ;
}
while(!fin.eof()) //文件是否为空
{
string str;
getline( fin, str );//把每一行放到str中,不断读取
if (str[] == '#')
{
// 以‘#’开头的是注释
continue;
} int pos = str.find("="); // 等于号的位置, P870
if (pos == -)
{
continue;
}
string key = str.substr( , pos ); //从下标0到pos
string value = str.substr( pos+, str.length() );
data[key] = value; if ( !fin.good() )
{
break;
}
}
float value1 = atof(getData("camera.cx",data).c_str());//上下的区别
     string value2 = getData("camera.cx",data);
        
     cout << value1 << endl;
     cout << value2 << endl;
}
string getData( string key ,map<string, string> & data)//成员函数
{
map<string, string>::iterator iter = data.find(key);//根据键,找到值
if (iter == data.end())
{
cerr<<"Parameter name "<<key<<" not found!"<<endl;
return string("NOT_FOUND");
}
return iter->second; //second值,first键
}

str为string类型对象,str.find()返回位置int类型。

atof 是ascII to float的缩写,它将ascII字符串转换为相应的单精度浮点数,比如传入"1.234",经过处理后就返回float类型的数1.234 。类似的还有atoi 、atol、itoa、ftoa等等。

读取的文件parameters.txt

# 这是一个参数文件

detector=ORB
descriptor=ORB
good_match_threshold= # camera
camera.cx=682.3;
camera.cy=254.9;
camera.fx=979.8;
camera.fy=942.8;
camera.scale=1000.0;

float value1 = atof(getData("camera.cx",data).c_str());
  string value2 = getData("camera.cx",data);

可以在终端的输出中看到上面两句程序的区别。

字符串搜索 find()的更多相关文章

  1. Linux常用命令学习2---(文件搜索命令locate find、命令搜索命令whereis which、字符串搜索命令grep、帮助命令man)

     1.文件搜索命令:locate [文件名]    在后台数据库中按文件名搜索,搜索速度比find快,耗费资源更少    例子:locate test.txt,就会显示文件名包含 test.txt的所 ...

  2. 【ToolGood.Words】之【StringSearch】字符串搜索——基于BFS算法

    字符串搜索中,BFS算法很巧妙,个人认为BFS算法效率是最高的. [StringSearch]就是根据BFS算法并优化. 使用方法: string s = "中国|国人|zg人|fuck|a ...

  3. C#下利用正则表达式实现字符串搜索功能的方法(转)

    关键字:正则表达式.元字符.字符串.匹配: 1.正则表达式简介:正则表达式提供了功能强大.灵活而又高效的方法来处:.NET框架正则表达式并入了其他正则表达式实现的: 2.字符串搜索:正则表达式语言由两 ...

  4. Windows和linux环境下按文件名和字符串搜索命令

    Windows 1.遍历C盘下所有txt 命令:for /r c:\ %i in (*.txt) do @echo %i 注释:for 循环的意思 /r 按照路径搜索 c:\ 路径 %i in   ( ...

  5. (九)Centos之搜索命令whereis、which和字符串搜索命令grep

    一.Centos之命令搜索命令whereis与which 1.1 whereis 命令名(搜索命令所在路径及帮助文档所在位置) 选项: -b :只查找可执行文件位置 -m:只查找帮助文件 1.2 wh ...

  6. Trie——解决字符串搜索、异或最值问题

    Trie--解决字符串搜索.异或最值问题 在说到Trie之前,我们设想如下问题: 给我们1e5个由小写字母构成的不重复的字符串,每个字符串长度不超过6,之后是1e5次查询操作,每次给我们一个字符串,要 ...

  7. linq字符串搜索条件,排序条件-linq动态查询语句 Dynamic LINQ

    在做搜索和排序的时候,往往是前台传过来的字符串做条件,参数的数量还不定,这就需要用拼sql语句一样拼linq语句.而linq语句又是强类型的,不能用字符串拼出来. 现在好了,有个开源的linq扩展方法 ...

  8. Substrings 子字符串-----搜索

    Description You are given a number of case-sensitive strings of alphabetic characters, find the larg ...

  9. ACM字符串处理算法经典:字符串搜索

    语法:result=strfind(char str[],char key[]); 参数: str[]:在这个源字符串查找操作 key[]:搜索字符串.不能为空字符串 回报值:     假设查找成功. ...

  10. Python: 字符串搜索和匹配,re.compile() 编译正则表达式字符串,然后使用match() , findall() 或者finditer() 等方法

    1. 使用find()方法 >>> text = 'yeah, but no, but yeah, but no, but yeah' >>> text.find( ...

随机推荐

  1. Qt中使用python--Hello Python!

    step1:install Python (version 2.7 or higher): step2:The configuration is as follows: 1.create qt con ...

  2. 三维dem

    关注World wind Java,<World wind Java三维地理信息系统开发指南随书光盘 1. 下载worldwind java sdk 下载地址:http://builds.wor ...

  3. LUOGU P4408 [NOI2003]逃学的小孩(树的直径)

    题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:“喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?”一听说要考试,Chris的父母就心急如焚,他们决定在尽 ...

  4. Ubuntu 网卡多个 IP 地址

    临时添加 IP 地址 首先,让我们找到网卡的 IP 地址.在我的 Ubuntu 15.10 服务器版中,我只使用了一个网卡. 运行下面的命令找到 IP 地址: 复制代码 代码如下: sudo ip a ...

  5. 01 Maven 安装与配置

    Maven 安装与配置 1. Maven 介绍 Maven 翻译为 "专家","内行".Maven 是 Apache 下的一个纯 Java 开发的开源项目,它是 ...

  6. <Linux多线程服务端编程>学习记录

    使用智能指针解决多线程下 类的解析冲突问题 有这样一个场景 使用StockFactory记录Stock的信息  容器是map<string,smart_ptr>; 代码如下: #inclu ...

  7. 2018.09.28 hdu5435A serious math problem(数位dp)

    传送门 数位dp卡常题. 写了一发dfs版本的发现过不了233. 于是赶紧转循环版本. 预处理出f数组. f[i][j]f[i][j]f[i][j]表示前i位数异或和为j的方案数. 然后每次直接数位d ...

  8. 2018.09.25 bzoj1856: [Scoi2010]字符串(组合数学)

    传送门 如果有n==m的条件就是卡特兰数. 但现在n不一定等于m. 我们可以考虑用求卡特兰数一样的方法来求答案. 我们知道有一种求卡特兰数的方法是转到二维平面求答案. 这道题就可以这样做. 我们将这个 ...

  9. asp.net web api 安装swagger

    使用nuget控制台, 输入 Install-Package Swashbuckle,回车,等待安装引用.nuget国内没有镜像,安装比较慢 安装成功后会多出一个引用 右键工程点--属性,左边导航栏选 ...

  10. 36 The Benefits of Marriage 结婚的益处

    36 The Benefits of Marriage 结婚的益处 ①Being sociable looks like a good way to add years to your life.Re ...