gpt4 book ai didi

c++ linux ifstream 读取csv文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:47:57 25 4
gpt4 key购买 nike

void Lexicon::buildMapFromFile(string filename )  //map
{
ifstream file;
file.open(filename.c_str() );
string wow, mem, key;
unsigned int x = 0;

while(true) {
getline(file, wow);
if (file.fail()) break; //check for error
while (x < wow.length() ) {
if (wow[x] == ',') {
key = mem;
mem.clear();
x++; //step over ','
} else
mem += wow[x++];
}

list_map0.put(key, mem); //char to string
list_map1.put(mem, key); //string to char
mem.clear(); //reset memory
x = 0;//reset index
}
file.close();
}

此函数读取一个 2 列的 csv 文件并创建一个以 column1 为键的 column2 的映射。我用 g++ 编译并且文件在大学文件共享上,当我用 ./foo 运行程序时,csv 文件 [在与 foo 相同的目录文件夹中] 没有被读取...为什么?

最佳答案

也许您没有该文件的读取权限。发出命令 ls -l <csv_file>看看你是否有权利阅读。有关文件权限的更多信息,请参阅此链接 https://help.ubuntu.com/community/FilePermissions

尝试下面的代码对我来说是完美的

   #include <iostream>
#include <stdio.h>
#include <map>
#include <string>
#include <fstream>
using namespace std;


int main(void ) //map
{
map<string, string> list_map0;

map<string, string> list_map1;
string filename = "csv";
ifstream file;
file.open(filename.c_str() );
string wow, mem, key;
unsigned int x = 0;

while(true) {
getline(file, wow);
if (file.fail()) break; //check for error
while (x < wow.length() ) {
if (wow[x] == ',') {
key = mem;
mem.clear();
x++; //step over ','
} else
mem += wow[x++];
}

list_map0[key] = mem; //char to string
list_map1[mem] = key; //string to char
mem.clear(); //reset memory
x = 0;//reset index
}
printf("%d\n", list_map0.size());
file.close();
}

关于c++ linux ifstream 读取csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14283751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com