字符串搜索 find()

Posted 112358nizhipeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串搜索 find()相关的知识,希望对你有一定的参考价值。

参考 《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 0;
    }
    while(!fin.eof()) //文件是否为空
    {
                string str;
                getline( fin, str );//把每一行放到str中,不断读取
                if (str[0] == #)
                {
                    // 以‘#’开头的是注释
                    continue;
                }

                int pos = str.find("=");  // 等于号的位置, P870
                if (pos == -1)
                {
                    continue;
                }
                string key = str.substr( 0, pos );  //从下标0到pos
                string value = str.substr( pos+1, str.length() );
                data[key] = value;

                if ( !fin.good() )
                {
                    break;
                }
     }


        string value = getData("camera.cx",data);
        cout << value << 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键 }

 

读取的文件parameters.txt

# 这是一个参数文件

detector=ORB
descriptor=ORB
good_match_threshold=10

# camera
camera.cx=682.3;
camera.cy=254.9;
camera.fx=979.8;
camera.fy=942.8;
camera.scale=1000.0;

 

技术分享图片

 


以上是关于字符串搜索 find()的主要内容,如果未能解决你的问题,请参考以下文章

mvn命令异常:An error has occurred in Javadoc report generation: Unable to find javadoc command异常已解决(代码片段

mvn命令异常:An error has occurred in Javadoc report generation: Unable to find javadoc command异常已解决(代码片段

Android - 将搜索传递给片段

MySQL find_in_set 与多个搜索字符串

实用代码片段将json数据绑定到html元素 (转)

java.util.MissingResourceException: Can't find bundle for base name init, locale zh_CN问题的处理(代码片段