gpt4 book ai didi

c++ - 标记化 : Refer to particular tokens after read multiple . dat 文件

转载 作者:行者123 更新时间:2023-11-28 07:34:30 26 4
gpt4 key购买 nike

我使用下面的代码将多个 .dat 文件读入二维 vector 并打印出标记值。但是,我需要知道编译完成后是否所有的token值都会存储在内存中,以及如何引用某个元素如token[3][27]作为进一步的示例处理:

for (int i = 0; i < files.size(); ++i) {
cout << "file name: " << files[i] << endl;

fin.open(files[i].c_str());
if (!fin.is_open()) {
cout<<"error"<<endl;
}


std::vector<vector<string>> tokens;

int current_line = 0;
std::string line;
while (std::getline(fin, line))
{

cout<<"line number: "<<current_line<<endl;
// Create an empty vector for this line
tokens.push_back(vector<string>());

//copy line into is
std::istringstream is(line);
std::string token;
int n = 0;

//parsing
while (getline(is, token, DELIMITER))
{
tokens[current_line].push_back(token);
cout<<"token["<<current_line<<"]["<<n<<"] = " << token <<endl;
n++;
}
cout<<"\n";
current_line++;
}
fin.clear();
fin.close();

}

我需要为每个文件创建 2D vector 吗?这可以在 C++ 运行时实现吗?

最佳答案

如果您想进一步使用您的 2D vector ,您需要在 for 循环之外声明它。您这样做的方式是创建一个局部变量,该变量在每次循环迭代时都会被销毁。

for (int i = 0; i < files.size(); ++i) {
std::vector<vector<string>> tokens(i);
}
tokens[0][0]; // you can't do it here: variable tokens not declared in this scope

当然,您可以在 while 循环之后立即使用您的 tokens 容器,按照您提到的方式处理特定的 token 。

要在 for 循环之外使用标记,您可以创建一个 3D vector 来保存文件、行、标记,或者将其设置为返回特定文件的 2D vector 的函数,然后您可以对其进行处理。

关于c++ - 标记化 : Refer to particular tokens after read multiple . dat 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17009712/

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