【发布时间】:2011-04-12 11:51:58
【问题描述】:
我一直在谷歌上搜索并阅读我的书,并尝试编写代码来阅读文本文件并处理其中的单词,一个接一个,所以我可以按字母顺序排列它们并保持计数用了多少个词,一个词用了多少。我似乎无法让我的 GetNextWord() 函数正常工作,这让我发疯了。
我需要一个接一个地读取单词,如果是大写,则将每个字母转换为小写。我知道如何做到这一点,并且已经成功地做到了。它只是逐个字符地获取单词并将其放入阻止我的字符串中。
这是我最近的一次尝试:任何帮助都会非常棒,或者提供有关如何逐字读取输入文件的教程的链接。 (单词是字母字符 a-z 和 '(不要)以空格、逗号、句点、; 、 : 等结尾......
void GetNextWord()
{
string word = "";
char c;
while(inFile.get(c))
{
while( c > 64 && c < 123 || c == 39)
{
if((isupper(c)))
{
c = (tolower(c));
}
word = word + c;
}
outFile << word;
}
}
【问题讨论】:
-
另外,在你的 while 条件中加上括号以清楚地定义它们。
-
不要使用不可移植的幻数。使用 'A' 或 'Z' 或任何 39 应该是的。
-
学习使用调试器,或将
std::cout << "c " << (int)c << '\n';、std::cout << "word is now '" << word << "'\n";等放入您的函数中,这样您就可以看到它正在执行的每个步骤。故障排除技巧比回答这个问题更重要。 -
文件是否包含连字符(意思是跨越换行符的单词)?