运行程序时不断出现此错误。如果我删除任一void函数它工作正常,但当我尝试运行完整的程序时,它给我表达式:(无符号)(c + 1)< = 256错误。在这个网站上尝试了几个线程来弄清楚发生了什么,但仍然无法弄清楚(某事,某些无符号字符?)。我是初学者,所以任何帮助都会非常感激。以下是我到目前为止的情况:
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
void countUpperLower(ifstream& instream, ofstream& outstream);
void Convert(ifstream& in_stream, ofstream& out_stream);
int main()
{
ifstream fin;
ofstream fout;
fin.open("CAD.dat");
if (fin.fail())
{
cout << "Input file opening failed.\n";
exit(1);
}
fout.open("outputs.txt");
if (fout.fail())
{
cout << "Output file opening failed.\n";
exit(1);
}
countUpperLower(fin, fout);
Convert(fin, fout);
fin.close();
fout.close();
cout << endl << "End of editing files.\n";
return 0;
}
void countUpperLower(ifstream& instream, ofstream& outstream)
{
char caps;
int uppercase = 0;
int lowercase = 0;
do
{
instream.get(caps);
if (isupper(caps))
uppercase++;
else if (islower(caps))
lowercase++;
} while (caps != '.');
cout << "There are " << uppercase << " uppercase letters in this file\n";
cout << "There are " << lowercase << " lowercase letters in this file\n";
}
void Convert(ifstream& in_stream, ofstream& out_stream)
{
char next;
do
{
in_stream.get(next);
if (isspace(next))
cout << '-';
else if (isdigit(next))
cout << '#';
else if (isupper(next))
putchar (tolower(next));
else if (islower(next))
putchar (toupper(next));
else
cout << next;
} while (next != '.');
}
答案 0 :(得分:0)
您的文字数据中包含哪些内容?例如,当遇到德国变音符号或其他字符> 0x80时,它被解释为负数,这将说明您的错误。
答案 1 :(得分:0)
代码看起来没问题,你提到的问题,看不到任何问题,因为没有名为c的变量,所以你怎么能得到你提到的错误? 但是,在转换函数中,在输入do-while循环之前,请在&#39;以外的某个值旁边初始化。&#39;,例如,
char next = 0;
答案 2 :(得分:0)
您想要在整个文件上运行两个不同的进程吗?如果是这样,您就不会在函数之间寻找文件的开头。你需要做这样的事情:
countUpperLower(fin, fout);
fin.seekg(0);
Convert(fin, fout);
此外,您的输出文件似乎是空的..不确定这是否是您的意图。您的意思是out_stream << next
而不是cout << next
吗? (以及其他人,例如-
,#
等)。