空函数C++错误此声明没有存储类或类型说明符

空函数C++错误此声明没有存储类或类型说明符,c++,C++,为什么出现错误此声明在ReadFile中没有存储类或类型说明符 void ReadFile(ifstream &in, std::map<std::string,std::set<std::string>> &m) { while(true) { std::string word; in>>word; if(!in.good())break; m[signatur

为什么出现错误此声明在ReadFile中没有存储类或类型说明符

void ReadFile(ifstream &in, std::map<std::string,std::set<std::string>> &m)

{
    while(true)
    {
        std::string word;
        in>>word;
        if(!in.good())break;
        m[signature(word)].insert(word);
    }
}

int main(){
    std::ifstream in("ospd.txt");
    std::map<std::string, std::set<std::string>> m;
    ReadFile(in,m);
}
不确定文件名中的ifstream是否正确。。。有什么想法吗

我发现了一个错误。。。在ifstream之前应该有一个std::。然而,它仍然不起作用。有线索吗

#include <iostream>
#include <fstream>
#include<map>
#include<set>
#include<string>


void swap(char &ch1, char &ch2){
    char tmp=ch1;
    ch1=ch2;
    ch2=tmp;
}

std::string ToLower(std::string s){
    for(int i=0;i < s.length();i++)
    {
        if(s[i]<='Z' && s[i]>='A')
        {
            s[i]-='A'-'a';
        }
    }
    return s;
}

std::string signature(std::string s)
{
    s=ToLower(s);
    for(int i=0;i<s.length();i++)
    {   int minIndex=i;

        for(int j=i+1;j<s.length();j++)
            if(s[j]<s[minIndex]) minIndex=j;
        swap(s[minIndex],s[i]);
    }
    return s;
}

void ReadFile(std::ifstream &in, std::map<std::string,std::set<std::string>> &m)
{
    while(true)
    {
        std::string word;
        in>>word;
        if(!in.good())break;
        m[signature(word)].insert(word);
    }
}
typedef std::map<std::string, std::set<std::string>>::const_iterator MapIterator;
 typedef std::set<std::string>::const_iterator SetIterator;

int main(){
    std::ifstream in("ospd.txt");
    std::map<std::string, std::set<std::string>> m;
    ReadFile(in,m);


for (MapIterator iter = m.begin(); iter != m.end(); iter++)
{
    std::cout << "Key: " << iter->first << std::endl << "Values:" << std::endl;

    for (SetIterator set_iter = iter->second.begin(); set_iter != iter->second.end(); set_iter++)
        std::cout << " " << *set_iter <<std:: endl;
}

    system("pause");
return 0;}

您没有包含std::string/map/set/ifstream所需的任何标题,也没有将ifstream与std::一起使用。

请提供完整的错误消息。因为您似乎没有使用名称空间std很好!第一个参数需要使用std::Please post an.Compiles fine here:我添加了一个签名的虚拟实现。读取流的函数不应该以std::ifstream的形式传输,而应该使用std::istream:这样它们就可以与std::cin(std::istringstream的一个实例)一起使用,我的标题包括:include@LuchianGrigore