gpt4 book ai didi

c++ - 使用 strtok_s 显示文本文件中的文本

转载 作者:行者123 更新时间:2023-11-28 02:54:09 27 4
gpt4 key购买 nike

我是 C++ 的初学者,我正在尝试通过使用带有 strtok_s 的标记将文本从文本文件放入 vector 中。

我只能将一个文本推回并显示在 vector 中,我确信我的编码存在一些问题。

代码如下:

    std::vector<char> myVector;
ifstream myReadFile;
myReadFile.open("E:/C++/Projects/Textfile project/Textfile project/class_data.txt", ios_base::in);
char output[100];
if (myReadFile.is_open()) {
while (!myReadFile.eof()) {
myReadFile >> output;
}

}
myReadFile.close();

char* token = NULL;
char* context = NULL;
char delims[] = " ,\t\n";


token = strtok_s(output, delims, &context);

while (token != NULL)
{
if (token != NULL)
{
myVector.push_back(token);
token = strtok_s(NULL, delims, &context);

}
}

for (int i = 0; i < myVector.size(); i++) {
cout << myVector[i] << endl;
}

我试图从文本文件中提取文本,将其分成单独的部分并将它们放入字符 vector 中。

谁能告诉我我犯了什么错误?抱歉,我不是专业编码,我是一名正在尝试学习 C++ 的高中生。

编辑后的代码,有效:

std::vector<std::string> myVector;
ifstream myReadFile;
myReadFile.open("E:/C++/Projects/Textfile project/Textfile project/class_data.txt", ios_base::in);
char output[100];
if (myReadFile.is_open()) {
while (!myReadFile.eof()) {
myReadFile >> output;

char* token = NULL;
char* context = NULL;
char delims[] = " ,\t\n";

token = strtok_s(output, delims, &context);

while (token != NULL)
{
myVector.push_back(token);
token = strtok_s(NULL, delims, &context);
}
}
}
myReadFile.close();

for (int i = 0; i < myVector.size(); i++) {
cout << myVector[i] << endl;
}

最佳答案

而不是 char 类型对象的 vector std::vector<char> myVector;您需要定义一个类型为 std::string 的对象 vector

std::vector<std::string> myVector;

这个声明

myVector.push_back(token);

无效,因为您正试图插入一个指针而不是一个字符。

还有while循环中的if语句

while (token != NULL)
{
if (token != NULL)
{
myVector.push_back(token);
token = strtok_s(NULL, delims, &context);

}
}

是多余的,可以删除

while (token != NULL)
{
myVector.push_back(token);
token = strtok_s(NULL, delims, &context);

}

还要考虑到在这个循环中

    while (!myReadFile.eof()) {
myReadFile >> output;
}

对象输出总是被覆盖。您应该将此循环与将输出拆分为标记的循环结合起来。否则,您正在处理文件的最后一条记录。

关于c++ - 使用 strtok_s 显示文本文件中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386322/

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