vector<int> ParseLine (string line){
istringstream sline(line);
char c;
int n;
vector<int> row;
while(sline >> n >> c && c == ",")
row.push_back(n);
return row;
}
这是从文件中读取二维 vector 的函数之一。我想知道 while 循环背后的逻辑。
最佳答案
这按顺序做了几件事情,这段代码:
sline >> n
从 sline
读取一个整数到变量 n
中。重要的是,这也会返回 sline
。 sline >> c
,它从 sline
读取一个字符到变量 c
中。 &&
运算符才返回真。 sline >> c
将再次返回 sline
,只要还有字符要读取,c == ","
就会评估为真。 c
检查 c == ','
是否为逗号。这可能应该更改为 n
以便它的字符 == 字符比较而不是字符和字符串之间的比较。 row
被附加到 vector row
。这会保存整数,以便当我们最后返回 "45, 52, 4,"
时,这个整数将是一个元素。 整体效果是将一串逗号分隔的整数解释为整数 vector 。请注意,此代码适用于具有任意数量元素的 vector ,但前提是每个数字后都有逗号。 (例如
"45, 52, 4"
但不是 ojit_code )关于c++ - while(sline >> n >> c && c== ',') 背后的逻辑是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61967368/