2013-10-29 65 views
0

如果我有一个程序读取包含沿着“BOSS1戴夫吉姆BOSS3科琳老板7哈里斯托德伊莲”线的东西,我试图将输入分成老板列表的文件和一个名单的列表,我会检查每个输入的字符串,但是我怎么知道这个人是不是老板?我会成立这样的事情开始:检查字符串C++的内容

void read(std::istream& is, Bosses<std::string>& bossList, Employees<std::string> empList){ 

    std::string name; 
    while(!is.eof()){ 
     is >> name; 
     } 
    } 

但我需要在while循环来检查,如果像name=="Boss_"但我不明白的字符串不够好,知道如何设置此。

+4

首先了解串不够好,然后继续执行更复杂的任务。 –

+0

和使用'而(是>>名称){...}',它也将检查其他错误,除了刚刚'EOF' – clcto

+0

如果要保证一个老板会用'Boss'启动,那么你可以做' std :: string :: find(“Boss”)'。如果返回'0'(字符串的开始),那么这是一个老板。 – ssell

回答

0

您可以使用插入运算符来解析名称为您的字符串空格分隔的字符串,并插入运算符跳过空白(默认)

void read(std::istream& is, Bosses<std::string>& bossList, Employees<std::string> empList) { 
    std::string temp; 
    std::vector<std::string> all_names; 
    //the insertion operator reads the string and bypasses all whitespace by default 
    while (is >> temp) { 

     //find bosses by using `std::string 
     if (temp.find("Boss") != std::string::npos) { 
      boosList.push_back(temp);//you didn't state what container `Bosses` uses but, `push_back is valid for `lists`, `vectors` and `deques` 
     } 
     else { 
      empList.push_back(temp);//you didn't state what container `Employees` uses but, `push_back is valid for `lists`, `vectors` and `deques` 
     } 
    } 
}