从 CSV 中读取并存储在 Vector 中
Reading from CSV and storing in a Vector
假设我有以下 csv 文件:
10.0.0.26
10.0.0.30
10.0.0.34
10.0.0.38
...
...
假设我有一个向量:
std::vector<L3Address> destAddresses;
我想要一段代码,它将读取上面的 csv 文件直到最后一个地址,并将每个地址存储在上面的向量中。
std::ifstream data("data.csv");
while(//till the end of file){
//read from csv
//write to vector
}
我尝试了以下方法:
std::ifstream data("data.csv");
while(std::getline(data,std::string value){
destAddresses.push_back(value);
}
但这不知何故不起作用。
您的示例似乎无法编译。除了缺少括号之外,您使用的 getline
函数还需要一个变量引用作为第二个参数。因此,您应该在使用前通过定义 value
变量来修复您的代码。
此外,为了构建 L3Address
,您可以从接受 const char*
.
的构造函数中获益
std::ifstream data("data.csv");
std::string value;
while(std::getline(data,value))
{
destAddresses.emplace_back(value.c_str());
}
我们去看看L3Address
的文档(注1)。在这里我们可以看到一个函数 bool L3Address::tryParse(const char * str)
,它将尝试将 C 字符串解释为地址,并告诉您它是否成功。
std::ifstream data("data.csv");
std::string line;
while (std::getline(data, line) {
L3Address addr;
if (addr.tryParse(line.c_str())) {
destAddresses.push_back(addr);
}
else
{
// TODO: handle malformed address
}
}
注意 1:生成此文档的工具对其格式设置非常糟糕,因此您无法亲自访问此处是情有可原的。
假设我有以下 csv 文件:
10.0.0.26
10.0.0.30
10.0.0.34
10.0.0.38
...
...
假设我有一个向量:
std::vector<L3Address> destAddresses;
我想要一段代码,它将读取上面的 csv 文件直到最后一个地址,并将每个地址存储在上面的向量中。
std::ifstream data("data.csv");
while(//till the end of file){
//read from csv
//write to vector
}
我尝试了以下方法:
std::ifstream data("data.csv");
while(std::getline(data,std::string value){
destAddresses.push_back(value);
}
但这不知何故不起作用。
您的示例似乎无法编译。除了缺少括号之外,您使用的 getline
函数还需要一个变量引用作为第二个参数。因此,您应该在使用前通过定义 value
变量来修复您的代码。
此外,为了构建 L3Address
,您可以从接受 const char*
.
std::ifstream data("data.csv");
std::string value;
while(std::getline(data,value))
{
destAddresses.emplace_back(value.c_str());
}
我们去看看L3Address
的文档(注1)。在这里我们可以看到一个函数 bool L3Address::tryParse(const char * str)
,它将尝试将 C 字符串解释为地址,并告诉您它是否成功。
std::ifstream data("data.csv");
std::string line;
while (std::getline(data, line) {
L3Address addr;
if (addr.tryParse(line.c_str())) {
destAddresses.push_back(addr);
}
else
{
// TODO: handle malformed address
}
}
注意 1:生成此文档的工具对其格式设置非常糟糕,因此您无法亲自访问此处是情有可原的。