这对我来说是最奇怪的错误。
g++ -Wall -g -std=c++11 *.cpp -o lab2
lab2.cpp: In function ‘void toAlpha(std::string&)’:
lab2.cpp:18:19: error: expected initializer before ‘<’ token
for(int i = 0, i < str.length(), ++i){
^
lab2.cpp:18:19: error: expected ‘;’ before ‘<’ token
lab2.cpp:18:19: error: expected primary-expression before ‘<’ token
lab2.cpp:18:38: error: expected ‘;’ before ‘)’ token
for(int i = 0, i < str.length(), ++i){
^
从我所读到的。此错误通常来自上述行之上的某些内容。但是,它几乎是代码中的第一个功能。也许你可以帮助看看我的眼睛不能。
仅供参考,该功能的目的是将所有非字母字符转换为空格。
无论我是通过索引还是通过迭代器访问,都会发生这种情况。
以下是代码:
#include <map>
#include <iostream>
#include <set>
#include <fstream>
#include <algorithm>
#include <list>
#include <cctype>
#include <sstream>
#include "print.h"
using namespace std;
typedef map<string,list<int>> WORDMAP;
/* makes symbols turn into spaces */
void toAlpha(string& str){
for(int i = 0, i < str.length(), ++i){
if(!isalpha(str[i])){
str[i] = ' ';
}
}
}
答案 0 :(得分:2)
您需要在for循环语句中使用;
。
答案 1 :(得分:1)
这是由于for
循环语法不正确
变化:
for(int i = 0, i < str.length(), ++i)
为:
for(int i = 0; i < str.length(); ++i)
// ^ ^
答案 2 :(得分:0)
使用分号代替逗号:
void toAlpha(string& str){
for(int i = 0; i < str.length(); ++i){
if(!isalpha(str[i])){
str[i] = ' ';
}
}
}
答案 3 :(得分:0)
for循环语法如下:
for(int i = 0; i < str.length(); ++i){
注意分号而不是逗号。