2014-01-23 40 views
1

這是我最奇怪的錯誤。錯誤:使用索引或迭代字符串的'<'標記之前的預期初始化器

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){ 
           ^

從我已閱讀。這個錯誤通常來自上面提到的行之上的東西。但是,它幾乎是代碼中的第一個函數。也許你可以幫助看看我的眼睛不能。

僅供參考此功能的目的是將所有非alpha字符轉換爲空格。

無論我是通過索引還是迭代器訪問,都會發生這種情況。

下面是代碼:

#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

您在if的應用分號中使用了逗號。 – ooga

回答

2

您需要在您的使用;的循環語句。

+0

謝謝!男人,我是個白癡 – Landon

+0

有時我們只需要另一雙眼睛。 –

1

這是由於不正確的for循環語法

變化:

for(int i = 0, i < str.length(), ++i) 

到:

for(int i = 0; i < str.length(); ++i) 
//   ^    ^   
0

使用分號,而不是逗號:

void toAlpha(string& str){ 
    for(int i = 0; i < str.length(); ++i){ 
    if(!isalpha(str[i])){ 
     str[i] = ' '; 
    } 
    } 
} 
0

的FO r循環語法如下:

for(int i = 0; i < str.length(); ++i){ 

注意分號而不是逗號。

相關問題