我有一个字符串流,我需要把第一部分取出来,然后把剩下的部分放到一个单独的字符串中。例如,我有一个字符串"This is a car",我需要以两个字符串结束:a = "This"和b = "is a car"。 当我使用stringstream使用<<获取第一部分时,然后我使用.str()转换为字符串,这当然给了我整个“This is a car"”。我怎样才能让它按我想的方式播放呢?
stringstream s("This is a car");
string s1 = s.str();
string first;
string second;
s >> first;
second = s1.substr(first.length());
cout << "first part: " << first <<"\ second part: " << second <<endl;
5条答案
按热度按时间agxfikkp1#
**编辑:**更正感谢@Cubbi:
编辑:
这个解决方案可以在某些情况下处理换行符(比如我的测试用例),但在其他情况下(比如@rubenvb的例子)会失败,我还没有找到一个干净的方法来修复它。**我认为@tacp的解决方案更好,更强大,应该被接受。
9avjhtql2#
你可以这样做:首先获取整个字符串,然后获取第一个单词,使用
substr
获取其余部分。在gcc 4.5.3输出中测试:
cedebl8k3#
你可以在阅读第一个比特后对流执行
getline
。cyej8jka4#
另一种方法是使用rdbuf:
如果您最终要将结果输出到流而不是字符串,这可能是一个不错的选择。
d4so4syb5#