C++ 检查字符串C+的内容+;
如果我让一个程序读取一个文件,其中包含类似“Boss1 Dave Jim Boss3 Coleen Boss 7 Harris Todd Elaine”的内容,并且我试图将输入分为一个Boss列表和一个姓名列表,我会检查输入的每个字符串,但我如何判断此人是否是Boss?首先,我会设置如下内容:C++ 检查字符串C+的内容+;,c++,string,C++,String,如果我让一个程序读取一个文件,其中包含类似“Boss1 Dave Jim Boss3 Coleen Boss 7 Harris Todd Elaine”的内容,并且我试图将输入分为一个Boss列表和一个姓名列表,我会检查输入的每个字符串,但我如何判断此人是否是Boss?首先,我会设置如下内容: void read(std::istream& is, Bosses<std::string>& bossList, Employees<std::string>
void read(std::istream& is, Bosses<std::string>& bossList, Employees<std::string> empList){
std::string name;
while(!is.eof()){
is >> name;
}
}
void read(标准::istream&is、老板和老板列表、员工雇员列表){
std::字符串名;
而(!is.eof()){
是>>名称;
}
}
但是如果像
name==“Boss”
这样的东西,我需要检查while循环,但是我对字符串的理解不够好,不知道如何设置它。您可以使用插入操作符解析名称字符串,因为您的字符串是以空格分隔的,插入操作符跳过空格(默认情况下):
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`
}
}
}
void read(标准::istream&is、老板和老板列表、员工雇员列表){
std::字符串温度;
std::矢量所有_名称;
//默认情况下,插入运算符读取字符串并绕过所有空白
while(is>>temp){
//使用'std::string'查找凸台
if(临时查找(“Boss”)!=std::string::npos){
boosList.push_back(temp);//您没有说明容器'boss'使用了什么,但是'push_back对于'list'、'vectors'和'deques'有效`
}
否则{
employist.push_back(temp);//您没有说明容器'Employees'使用什么,但是'push_back对于'lists'、'vectors'和'deques'有效`
}
}
}
从充分理解字符串开始,然后继续执行更复杂的任务。使用当(is>>name){…}
时,它还将检查除了EOF
之外的其他错误。如果您保证boss将从boss
开始,那么您可以执行std::string::find(“boss”)
。如果它返回0
(字符串的开头),那么它就是一个boss。可以保证,@ssel,我现在有:如果(name.find(“boss”)==0)
那么它就是一个boss,并进入正确的列表。现在测试一下,谢谢