我一直在尝试编写一个程序来解析文本文件并将 6
条信息馈送到对象数组中。我的问题是我在弄清楚如何处理文本文件时遇到了问题。有人告诉我,我需要做的第一步是编写一些代码来计算每个条目有多少个字母。 txt 文件的格式如下:
"thing1","thing2","thing3","thing4","thing5","thing6"
这是我的代码的当前版本:
#include<iostream>
#include<string>
#include<fstream>
#include<cstring>
using namespace std;
int main()
{
ifstream myFile("Book List.txt");
while(myFile.good())
{
string line;
getline(myFile, line);
char *sArr = new char[line.length() + 1];
strcpy(sArr, line.c_str());
char *sPtr;
sPtr = strtok(sArr, " ");
while(sPtr != NULL)
{
cout << strlen(sPtr) << " ";
sPtr = strtok(NULL, " ");
}
cout << endl;
}
myFile.close();
return 0;
}
所以现在有两件事让我很难过。
1) 如何处理分隔符?
2) 如何处理“跳过”每行中的第一个引号?
最佳答案
读入字符串而不是 C 风格的字符串。这意味着您可以使用方便的标准方法。
std::string::find()
方法应该可以帮助您找到要解析的每个内容。
http://www.cplusplus.com/reference/string/string/find/
您可以使用它来查找所有逗号,这将为您提供所有内容的开头。
然后您可以使用 std::string::substr()
将字符串分割成每一段。
http://www.cplusplus.com/reference/string/string/substr/
你可以通过传入比开始多 1 和比长度少 1 来摆脱引号,你也可以使用
关于c++ - 使用 strtok() 解析文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16290997/