C++错误:“}”标记之前的预期主表达式
C++ error: expected primary-expression before ‘}’ token
我正在尝试调用一个名为 correction(original,corrected)
的 void 函数,当我尝试编译它时,我遇到了一些形式的错误:
错误:"}"标记之前的预期主表达式
这是我的完整代码:
#include <cstdio>
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
void correction(ifstream& original,ofstream& corrected);
int main ()
{
ifstream original;
ofstream corrected;
char filename[16];
cout<<"Enter filename:n";
cin>>filename;
original.open(filename);
corrected.open("corrected.txt");
if (original.fail( ))
{
cout << "Input file opening failed.n";
exit(1);
}
if (corrected.fail( ))
{
cout << "Input file opening failed.n";
exit(1);
}
else
{
correction(original,corrected);
}
return 0;
}
void correction(ifstream& original,ofstream& corrected)
{
char symbol;
while(! original.eof())
{
original.get(symbol);
if (symbol== 'c')
{
corrected.put(symbol);
original.get(symbol);
if (symbol=='i')
{
corrected.put(symbol);
original.get(symbol);
if (symbol=='n')
{
corrected.put(symbol);
original.get(symbol);
while (symbol==' ')
{
original.get(symbol);
}
for (symbol=='<')
{
corrected.put('>');
original.get(symbol);
}
corrected.put(symbol);
}
}
if (symbol=='o')
{
corrected.put(symbol);
original.get(symbol);
if (symbol=='u')
{
corrected.put(symbol);
original.get(symbol);
if (symbol=='t')
{
corrected.put(symbol);
original.get(symbol);
while (symbol==' ')
{
original.get(symbol);
}
for (symbol=='>')
{
corrected.put('<');
original.get(symbol);
}
corrected.put(symbol);
}
}
}
}
else
corrected.put(symbol);
}
return;
}
当我尝试编译此代码时,出现以下错误:
运算符.cpp:59:23:错误:在"("标记之前应使用";" for (symbol=='<'( ^ 运算符.cpp:65:5:错误:"}"标记之前的预期主表达式 } ^ 运算符.cpp:65:5:错误:在"}"标记之前预期"(">>运算符.cpp:65:5:错误:"}"之前的预期主表达式 令 牌 运算符.cpp:65:5:错误:"}"标记之前应为";" 运算符.cpp:83:20:错误:在"("标记之前应使用";" 对于(符号=='>'( ^ 运算符.cpp:89:9:错误:"}"标记之前的预期主表达式 } ^ 运算符.cpp:89:9:错误:在"}"之前预期"("标记运算符.cpp:89:9:错误:"}"之前的预期主表达式 令牌运算符.cpp:89:9:错误:在"}"令牌之前应为";">
我对编程有点陌生,花了几个小时试图修复它,但我不明白问题是什么。
非常感谢任何形式的帮助!
后来在仔细查看@liup的回答后添加:
哎哟,我的错,OP可能确实打算在这里使用循环!然后,您可以像这样使用 while 循环:
while (symbol=='<')
和
while (symbol=='>')
旧答案:
这里:
if (symbol=='<')
在这里:
if (symbol=='>')
而不是for (symbol=='<')
和for (symbol=='>')
.
该错误源于这样一个事实,即在 for
循环中,您必须拥有所有三个子句,即使它们是空的,因此两个分号;
是必需的。您
for
语句中的每一个中提供单个分号。
有关参考,请参阅 cpp 首选项中的循环说明
语法的for (symbol=='<')
和for (symbol=='>')
都是错误的。在此方案中,您可以按如下方式使用 for 循环。
for (; symbol == '<';)
{
corrected.put('>');
original.get(symbol);
}
for (; symbol == '>';)
{
corrected.put('<');
original.get(symbol);
}
或
for (; symbol == '<';original.get(symbol))
{
corrected.put('>');
}
for (; symbol == '>';original.get(symbol))
{
corrected.put('<');
}
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++ 标记之前预期主表达式'('错误
- 正则表达式中带有卷轴大括号的正则表达式错误
- C++初学者错误:主要表达式错误
- 代数树表达式C++错误:未解析的外部符号"Public:_thiscall AlgebraicTreeExpression::~AlgebraicTreeExpression(void) ..."
- 使用多线程处理对象数组 - 无效使用 void 表达式错误
- 为什么 if constexpr 不会使这个核心常量表达式错误消失?
- 提升正则表达式错误:未初始化的提升::match_results
- C++比较表达式错误
- C++ "主表达式"错误
- C++ 正则表达式错误(未处理的异常)
- 'this'不能用于常量表达式错误 (C++)
- 代码块引发有关for_each的预期主表达式错误
- Boost Regex中的命名子表达式错误
- C++之前的主要表达式错误
- Ubuntu 上的正则表达式错误
- C++正则表达式错误
- 理解常量表达式错误
- 成员函数和预期的主表达式错误
- Xcode中应有表达式错误