我已尝试使用atof()
(我认为还很遥远)和stringstream
。我觉得stringstream
是答案,但我对此并不熟悉。根据一些Google搜索,YouTube视频以及一段时间在cplusplus.com上的了解,我的语法如下所示。我正在从.csv
文件中提取数据,并尝试将其放入std::vector<double>
中:
while (file.good() )
{
getline(file,line,',');
stringstream convert (line);
convert = myvector[i];
i++;
}
答案 0 :(得分:1)
如果您正在从流(文件)中读取双打,则可以简化以下操作:
Cells
With
将从流中读取为所需的类型,并自动进行转换(如果存在转换)。
如果每一行都有更多信息,则可以使用Dim LRow as Long
With ThisworkBook.Sheets("????")
LRow = .Range("A" & .Rows.Count).End(xlUp).Row
.Range("C2:AX5330").Formula = "=INDEX($A2,MATCH(D$1,$B2,0))" 'Make sure your cell references are correct here
.Range("C2:AX5330").Value = .Range("C2:AX55330").Value 'Place as values instead of formula
End With
作为中间字符。就像一个单词一样,是整数和双精度数。
double value;
while(file >> value) {
myvector.push_back(value);
}
但是,如果每行只有一个数字,那就太过分了。
现在让我们看一下operator>>
文件。
这是基于行的文件,但是每个值都用stringstream
分隔。因此,在这里您将读取一行,然后在该行上循环并读取值,后跟逗号。
std::string line;
while(std::getline(file, line)) {
std::stringstream lineStream(line);
std::string word;
int integer;
double real;
lineStream >> word >> integer >> real;
}
不要在while条件下对csv
进行测试。
Why is iostream::eof inside a loop condition considered wrong?