我不明白如何在.txt文件字符串输入中使用toupper和isalpha

时间:2019-02-04 04:03:28

标签: c++

我的程序在很大程度上是不完整的,但是我假设在文本文件输入字符串之后,使用toupper来修改字符串可以将所述字符串的所有字符更改为大写。我读到它与int类型一起工作,或者在这种情况下我认为是Ascii。但是我不太确定从这里出发。就初学者C ++而言,最有效的方法是从文本文件转换和检查字符串?

我已经搜索了这个问题,发现了各种各样的方法,例如使用std :: transform,但是我觉得我的讲师只希望我们使用Tony Gaddis的《从C ++开始》一书中教的方法。不幸的是,我在书中找不到在文本文件输入上使用toupper的引用,仅在char值上引用。为了教育起见,我希望您对在这里使用什么以及为什么使用有所了解。我欢迎推荐阅读。

#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
using namespace std;

int main()
{
    string text;
    ifstream textFile;
    int ch;
    textFile.open("letter_count.txt", ios::in);
    toupper(textFile.get());
    isalpha(textFile.get());

    if (textFile)
    {
        // Read an item from the file.
        getline(textFile, text);

        // While the last read operation
        // was successful, continue.
        while (textFile)
        {
            if (textFile)
            // Display the last item read.
            cout << text << endl;

            // Read the next item.
            getline(textFile, text);
        }

        // Close the file.
        textFile.close();
    }
    else
    {
        cout << "ERROR: Cannot open file. \n";
    }
    cout << "The most common letter is " " with " " occurances. \n";
    cout << "The least common letter is " " with " " occurances. \n";


    system("pause");
}

使用toupper没有任何效果。

1 个答案:

答案 0 :(得分:2)

那是因为toupper只接受一个int值。注意这里: http://www.cplusplus.com/reference/cctype/toupper/?kw=toupper

您必须遍历字符串中的每个字符才能对其进行转换。