【发布时间】:2015-12-06 20:57:59
【问题描述】:
我正在尝试从文本文件中读入一首包含逗号、空格、句点和换行符的诗。我正在尝试使用 getline 读取每个单独的单词。我不想阅读任何逗号、空格、句点或换行符。当我读入每个单词时,我将每个字母大写,然后调用我的插入函数将每个单词作为单独的节点插入到二叉搜索树中。我不知道分隔每个单词的最佳方法。我已经能够用空格分隔每个单词,但逗号、句点和换行符会一直被读入。
这是我的文本文件:
玫瑰是红色的, 紫罗兰是蓝色的, 数据结构是最好的, 你和我都知道这是真的。
我使用的代码是这样的:
string inputFile;
cout << "What is the name of the text file?";
cin >> inputFile;
ifstream fin;
fin.open(inputFile);
//Input once
string input;
getline(fin, input, ' ');
for (int i = 0; i < input.length(); i++)
{
input[i] = toupper(input[i]);
}
//check for duplicates
if (tree.Find(input, tree.Current, tree.Parent) == true)
{
tree.Insert(input);
countNodes++;
countHeight = tree.Height(tree.Root);
}
基本上我使用 getline(fin,input, ' ') 来读取我的输入。
【问题讨论】:
-
您可以使用
getline(fin, input, '\n');来抓取每一行。然后 parse 单词的行。要解析一个单词,可以使用std::string的find_first_of成员函数。 -
有没有在不使用外部类的情况下解决这个问题?我是学生,我们不应该这样做。
-
您已经在使用
getline函数和std::string类。