之前有人吐槽用 C++ 写一些输入格式比较奇怪的屑题的时候很麻烦,所以这里介绍一下 stringstream 的简单用法。虽然 C++ 的字符串确实存在诸多缺陷,但应付这些问题还是绰绰有余的。
面对类似于这种格式的数据:
[abc,de,fgh,zzz]
可以采用下面的方式来实现读取与分割。注意 string.find
函数返回的是一个无符号整数,表示该字符的位置。
vector<string> readLine() {
string line, s;
getline(cin, line);
line.erase(line.find('['), 1);
line.erase(line.find(']'), 1);
stringstream ss(line);
vector<string> ret;
while (getline(ss, s, ',')) {
ret.push_back(s);
}
return ret;
}
stringstream 的其他应用以后再写。