2017-05-30 51 views
0

コード内でいくつかのエラーが発生しています.C++を初めて使用しているので、私が間違っていることや解決策を理解するのに苦労しています。私は公正なビットの周りでグーグルしたが、私が見つけたものは誰も私がこれから学ぶことができるように驚くべきことを私にいくつかの助けを与えることができる意味がありました。Visual Studioエラー:C2672&C2780

エラーはすべて23行目の検索(トークン)です。

Error C2672 'search': no matching overloaded function found TakeTwo d:\desktop\twittersearch\taketwo\taketwo\taketwo.cpp 23 
Error C2780 '_FwdIt1 std::search(_FwdIt1,_FwdIt1,_FwdIt2,_FwdIt2)': expects 4 arguments - 1 provided TakeTwo d:\desktop\twittersearch\taketwo\taketwo\taketwo.cpp 23 
Error C2780 '_FwdIt1 std::search(_FwdIt1,_FwdIt1,_FwdIt2,_FwdIt2,_Pr)': expects 5 arguments - 1 provided TakeTwo d:\desktop\twittersearch\taketwo\taketwo\taketwo.cpp 23 

コード:

#include "stdafx.h" 
#include <cstring> 
#include <fstream> 
#include <iostream> 
#include <string> 
#include <algorithm> 
using namespace std; 

string token; 

int main() 
{ 
    int menu_choice; 
    cout << "Main Menu:\n"; 
    cout << "1. Search for \"winner\" \n"; 

    cout << "Please choose an option: "; 
    cin >> menu_choice; 

    if (menu_choice == '1') { 
     token == "winner"; 
     search(token); 
    } else { 
     cout << "\nPlease enter a valid option\n"; 
     system("Pause"); 
     system("cls"); 
     main(); 
    } 

    return 0; 
} 

void search(string &token) 
{ 
    ifstream fin; 
    fin.open("sampleTweets.csv"); 

    if (fin.is_open()) 
    { 
     cout << "File opened successfully" << "\n"; 
    } 
    else { 
     cout << "Error opening file" << "\n"; 
    } 

    string line; 
    while (getline(fin, line)) { 
     if (line.find(token) != string::npos) { 
      int n = line.find(","); 
      char c; 
      line[n] = ' '; //Changes the comma spacing 
      line.erase(remove_if(line.begin(), line.end(), [](char chr) { return chr == '\"' || chr == '\'' || chr == ','; }), //Removes the characters " ' and , from the strings 
       line.end()); 
      line.erase(n + 1, 1); //Removes the 'b' from the beginning of each tweet 
      cout << line << endl; 
     } 

    } 

    fin.close(); 
    char anykey; 
    cout << "press any key"; 
    cin >> anykey; 

    return; 
} 

答えて

3

using namespace std;の危険。 search関数を使用する前に宣言したり定義したりすることは決してないので、コンパイラはを意味しており、これは<algorithm>ヘッダーの一部です。使用前に関数をdeclareにすることで、この場合のエラーを修正します。

#include <cstring> 
#include <fstream> 
#include <iostream> 
#include <string> 
#include <algorithm> 
using namespace std; 

string token; 

// Forward declare search before first use 
void search(string &token); 

int main() 
{ 
    int menu_choice; 
    cout << "Main Menu:\n"; 
    cout << "1. Search for \"winner\" \n"; 

    cout << "Please choose an option: "; 
    cin >> menu_choice; 

    if (menu_choice == '1') { 
     token == "winner"; 
     search(token); 
    } 
    else { 
     cout << "\nPlease enter a valid option\n"; 
     system("Pause"); 
     system("cls"); 
     main(); 
    } 

    return 0; 
} 
関連する問題