微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果我想将它拆分成单词,我如何使ifstream :: get工作?

如何解决如果我想将它拆分成单词,我如何使ifstream :: get工作?

| 这是我的代码。在我叫ѭ0the的那一行上,我不断出错。我正在尝试使用定界符:
char* spamdir = argv[1];

char* hamdir = argv[2];
char* dictname = argv[3];
ofstream* outp = new ofstream;
ifstream* read = new ifstream;
DIR *sdp = opendir(spamdir);
struct dirent *directory;
char* word = (char*)malloc(256);
while(directory = readdir(sdp))
{
    cout << directory->d_name << endl;
    char* name = directory->d_name;
    char* filepath = (char*) malloc(100);
    strcpy(filepath,\"\\0\");
    strcat(filepath,spamdir);
    strcat(filepath,\"/\");
    strcat(filepath,name);
    read->open(filepath);
    if(read->good())
        cout <<\"sweet\\n\";

    while(read->good())
    {
        read->get(word,255,\" \");
        cout << word  << endl;
    }
    read->close();
    free(filepath);
}
    

解决方法

        您没有告诉我们错误是什么,但是我的猜测是,问题在于
std::istream::get()
中的定界符参数必须为
char
,但是您正在传递字符串。尝试使用
\' \'
代替
\" \"
。 一种更简单的方法是使用
std::getline()
,如下所示:
std::string word;
while (std::getline(*read,word,\' \')) {
    std::cout << word << std::endl;
}
每当您在C ++程序中使用
malloc
时,您可能都在艰难地工作。 (顺便说一句,每当您有编译器错误消息时,最好将这些消息包括在您的问题中。)     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。