Nec*_*sil 4 c++ loops vector while-loop
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;
}
Run Code Online (Sandbox Code Playgroud)
这是从文件中读取二维向量的函数之一。我想知道 while 循环背后的逻辑。
这按顺序做了几件事情,这段代码:
sline >> n从sline变量中读取一个整数n。重要的是,这也会返回 sline.
我们现在有效地sline >> c从sline变量中读取字符c。
&&仅当双方都为真时,运算符才返回真。sline >> c将再次返回sline,只要还有字符要读取,它就会评估为真。
c == ","检查这c是一个逗号。这可能应该更改为c == ','字符 == 字符比较,而不是字符和字符串之间的比较。
然后在循环体中,整数n被附加到向量row。这会保存整数,以便当我们最后返回row时,这个整数将是一个元素。
整体效果是将一串逗号分隔的整数解释为整数向量。请注意,此代码适用于具有任意数量元素的向量,但前提是每个数字后都有逗号。(EG"45, 52, 4,"但不是"45, 52, 4")