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"
)
归档时间: |
|
查看次数: |
94 次 |
最近记录: |