C++ >>变量名称执行中的流

C++ fstream in >> variableName execution

本文关键字:gt 变量名 C++ 执行      更新时间:2023-10-16

这是我的代码,不知道为什么没有错误但什么也没返回。 如果读取文件中没有getline函数可以吗?在调试时,另一个潜在的问题是在声明 map 时是否需要 map 来定义大小。我是初学者。任何帮助不胜感激。

#include <iostream>
#include <fstream>
#include<map>
#include<set>
#include<string>    
void swap(char &ch1, char &ch2){ //swap the content
    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;}

更新:编程正在工作。谢谢大家!!

你能试试这个吗?

#include <iterator>
using namespace std;

void ReadFile(std::ifstream &in, std::map<std::string,std::set<std::string>> &m)
    istream_iterator<string> itr(in);
    istream_iterator<string> end;
    while(itr != end)
    {
        string work = *itr;
        m[signature(word)].insert(word);
        ++itr;
    }