是否存在用于字符串的默认分隔符?从我的研究中,我了解到我可以用它来分割一个字符串,用空格和逗号作为分隔符。但是,我可以使用其他分隔符作为字符串吗?下面是一个C++代码片段:
vector<int> parseInts(string str) {
// Complete this function
stringstream ss(str);
vector<int> res;
char ch;
int x;
while(ss){
ss >> x >> ch;
res.push_back(x);
}
return res;
}这段代码可以工作,但我没有提到任何特定的分隔符。这是怎么发生的?
发布于 2020-06-04 22:40:53
根本没有流的“分隔符”。另一方面,operator>>通过分隔空格字符来实现它的读取。对于其他分隔符字符,可以使用std::getline()代替,例如:
vector<int> parseInts(string str) {
// Complete this function
istringstream iss(str);
vector<int> res;
int x;
string temp;
char delim = '-'; // whatever you want
while (getline(iss, temp, delim)) {
if (istringstream(temp) >> x) { // or std::stoi(), std::strtol(), etc
res.push_back(x);
}
}
return res;
}这段代码工作时没有提到任何特定的分隔符。这是怎么发生的?
流不知道任何关于分隔符的信息。正在发生的是,在每个循环迭代中,您调用ss >> x读取下一个可用的非空格子字符串并将其转换为整数,然后调用ss >> ch读取该整数后面的下一个可用的非空格字符。代码并不关心这个字符实际上是什么,只要它不是空格。循环一直运行到流的末尾,或者遇到读取/转换错误。
https://stackoverflow.com/questions/62203379
复制相似问题