首页 > 代码库 > istringstream的操作
istringstream的操作
今天在stackoverflow上看到这么个问题,写完之后看了看别人的提交的答案,感觉自己的答案虽然能得出正确结果但是有点啰嗦,对于c++还是没有熟练,没有想起有istringstream,而且提问的老外写的程序bug实在是太多了,while循环啊,分号啊都不规范,不过那个return挺有意思,嘿嘿第一次见(可能是写的代码和看的代码太少了吧 ,嘿嘿 ,见笑,我也是一菜),于是我放弃了我原来的答案,修改了一下别人的答案,那个人的答案也不对,不能运行啊,所以说我自己改动了一下.
今儿记录一下,省的以后忘..
老外的提问:
1 struct client 2 { 3 string PhoneNumber; 4 string FirstName; 5 string LastName; 6 string Age; 7 }; 8 int main() 9 {10 string data =http://www.mamicode.com/ getClientDatabase();11 12 vector <client> clients;13 14 parse_string(data, clients);15 return 0;16 }17 18 string getClientDatabase()19 {20 return21 "(844)615-4504 Sofia Ross 57 \n"22 "(822)516-8895 Jenna Doh 30 \n"23 "(822)896-5453 Emily Saks 43 \n"24 25 }26 27 void parse_string(string data, vector <client> &clients)28 {29 string temp;30 string temp1;31 string temp2;32 string temp3;33 34 int i = 0;35 int j = 0;36 int k = 0;37 int l = 0;38 39 while (i < data.length())40 {41 if (data.at(i) != ‘ ‘)42 {43 temp.push_back(data.at(i));44 j++;45 }46 else47 {48 clients.at(i).PhoneNumber = temp;49 }50 51 }52 if (data.at(j) != ‘ ‘)53 {54 temp1.push_back(data.at(j));55 k++;56 }57 else58 {59 clients.at(i).FirstName = temp1;60 }61 62 if (data.at(k) != ‘ ‘)63 {64 temp2.push_back(data.at(k));65 l++;66 }67 else68 {69 clients.at(i).LastName = temp2;70 }71 72 if (data.at(l) != ‘ ‘)73 {74 temp3.push_back(data.at(l));75 76 }77 else78 {79 clients.at(i).Age = temp3;80 }81 i++;82 83 }
我的回答:
1 void parse_string(string data, vector <client> & clients) 2 { 3 struct client tempS; 4 istringstream iss(data); 5 for (size_t i=0; iss >> tempS.PhoneNumber; ++i) 6 { 7 iss >> tempS.FirstN >> tempS.LastN >> tempS.Age; 8 clients.push_back(tempS); 9 }10 }11 //test code12 13 vector <client>::iterator it = clients.begin();14 for(; it != clients.end(); ++it )15 {16 cout << it->PhoneNumber << " "17 << it->FirstN << " "18 << it->LastN << " "19 << it->Age << endl;20 }
istringstream的操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。