首先我不想使用boost库。我有一个程序正在读取一行并将其保存为字符串:
ajf938 sshd Thu Mar 27 23:25 still logged in c110-20-242-157.mirnd4.nsw.optusnet.com.au
然后我试图把它分成5个字符串。但是,字符串中每个元素的大小将被更改。另一个字符串可以是:
jcm995 sshd Thu Mar 27 15:18 - 15:19 (00:00) 192.131.251.2
我已经拥有的是
pos=name.find(' ',0);
cout<<pos<<endl;
string username = name.substr(0,pos);
cout<<username<<endl;
然后我从那个位置寻找拳头而不是角色:
find_first_not_of(' ');
但我认为应该有其他有效的方法。任何想法都将不胜感激。
更新:
这是我到目前为止所做的:
if(name.find('(',0))
{
string username;
string date;
string duration;
string hostname;
int val = 0;
istringstream iss(name, istringstream::in);
string word;
while( iss >> word )
{
if(val==0){
username = word;
}
else if(val>1 && val<6)
{
date +=" "+word;
}
else if(val==6){
duration = word;
}
else if(val == 7){
hostname=word;
}
val++;
}
cout<<"usename= "<<username << " date= "<<date <<" duration= "<<duration<<" hostname= "<<hostname<<endl;
}