我的程序在很大程度上是不完整的,但是我假设在文本文件输入字符串之后,使用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没有任何效果。
答案 0 :(得分:2)
那是因为toupper只接受一个int值。注意这里: http://www.cplusplus.com/reference/cctype/toupper/?kw=toupper
您必须遍历字符串中的每个字符才能对其进行转换。