笔试也遇到过不少问题,其中比较多的不是算法处理不了,而是输入输出处理不了。这里记一些曾经遇到过的输入问题吧。
根据空格分割的输入处理
int main() {
istringstream str("a b v c d");
string out;
while (str >> out) {
cout << out << endl;
}
return 0;
}
istringstream是输入字符串流,当他输入到字符串时,就是一个输入过程,然后我们可以对其进行处理。c++对于输入的默认分割符是空格,换行和tab,这里可以参考一下。
对于符号分割,比如什么逗号之类的,初步想法是对字符串遍历,然后用两个参数记录一下起点和终点,用substr函数获取并记录到一个字符串数组。
int main() {
string x = "a,b,c,d,d,a,f";
char a = ',';
int i = 0;
int j = 0;
vector<string> l;
while (i < x.size()) {
j = x.find(a, i);
if(j>=0){
l.push_back(x.substr(i, j - i));
i = j + 1;
cout << l.back()<<endl;
}
else if (j == -1) {
l.push_back(x.substr(i, x.size() - i));
cout << l.back();
break;
}
}
return 0;
}
暂时就这个想法,对于两字节的分隔符也能进行分割。又简单点的之后在更吧。