OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 168|回复: 4

用C++对单词排序出了一些错误

[复制链接]
发表于 2017-1-11 10:36:59 | 显示全部楼层 |阅读模式
读取的文件见附件,我不知道该怎么修改了,照书上抄的代码啊怎么会还有错误
显示的是这个错误:
Expression((unsigned)(c + 1) <= 256);
我查了下错误代码是这一段:
extern "C" int __cdecl _chvalidator(
        int c,
        int mask
        )
{
        _ASSERTE((unsigned)(c + 1) <= 256);
        return _chvalidator_l(NULL, c, mask);
}

extern "C" int __cdecl _chvalidator_l(
        _locale_t plocinfo,
        int c,
        int mask
        )



我的C++代码是:

  1. #include<bitset>
  2. #include <iomanip>
  3. #include <opencv2/core/core.hpp>
  4. #include<opencv2/highgui/highgui.hpp>
  5. #include<opencv2/imgproc/imgproc.hpp>
  6. #include "opencv2/features2d/features2d.hpp"
  7. #include <opencv2/nonfree/nonfree.hpp>
  8. #include <opencv2/legacy/legacy.hpp>
  9. #include <opencv2/contrib/contrib.hpp>
  10. #include <iostream>
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include <math.h>
  14. #include <time.h>
  15. #include <random>
  16. #include <vector>
  17. #include <list>
  18. #include <deque>
  19. #include <fstream>
  20. #include <string>
  21. #include <cctype>
  22. #include <algorithm>
  23. using namespace cv;
  24. using namespace std;

  25. void get_word(istream& in_stream,string& w);
  26. void insert_word(string word,list<string>&wordlist);
  27. void display_list(ostream & out_stream,list<string>wordlist);

  28. int main()
  29. {
  30.         ifstream in_stream;
  31.         ofstream out_stream;
  32.        
  33.         string infile,outfile;
  34.         string word;

  35.         //cin>>infile;
  36.         //cin>>outfile;
  37.         infile = "inputfile.txt";
  38.         outfile = "outputfile.txt";

  39.         in_stream.open(infile.c_str());
  40.         if(in_stream.fail())
  41.                 cout<<"坏了坏了"<<endl;
  42.         else
  43.         {
  44.         out_stream.open(outfile.c_str());
  45.         list<string>wordlist;
  46.         list<string>::iterator iter;
  47.         get_word(in_stream,word);
  48.        
  49.           while(word.size())
  50.           {
  51.                 insert_word(word,wordlist);
  52.                 get_word(in_stream,word);
  53.           }
  54.           wordlist.sort();
  55.           out_stream<<"There were"<<wordlist.size()<<"distinct words.\n";
  56.           out_stream<<"\nHere is the ordered list of words\n";
  57.           display_list(out_stream,wordlist);
  58.         }

  59.         in_stream.close();
  60.         return 0;
  61. }


  62. void get_word(istream& in_stream,string& w)
  63. {
  64.         char ch;
  65.         w = " ";
  66.         in_stream.get(ch);
  67.         while(! isalpha(ch)&&!in_stream.eof())
  68.         {
  69.                 in_stream.get(ch);
  70.         }

  71.         while(isalpha(ch)&&!in_stream.eof())
  72.         {
  73.         ch = tolower(ch);
  74.         w += ch;
  75.         in_stream.get(ch);
  76.         }
  77. }

  78. void insert_word(string word,list<string>&wordlist)
  79. {
  80.         list<string>::iterator iter;

  81.         iter = find(wordlist.begin(),wordlist.end(),word);
  82.         if( iter == wordlist.end())
  83.         {
  84.         wordlist.insert(iter,word);
  85.         }
  86. }

  87. void display_list(ostream & out_stream,list<string>wordlist)
  88. {
  89.         int columns(3),counter(0);
  90.         list<string>::iterator iter;
  91.         out_stream<<setiosflags(ios::left);

  92.         iter = wordlist.begin();

  93.         while(iter != wordlist.end())
  94.         {
  95.                 out_stream<<setw(20)<<(*iter).c_str();
  96.                 iter++;
  97.                 counter++;
  98.                 if(counter%columns == 0)
  99.                 {
  100.                         out_stream<<endl;
  101.                 }
  102.         }
  103. }

复制代码


inputfile.txt

47 Bytes, 下载次数: 36

读取的文件

回复

使用道具 举报

发表于 2017-1-11 16:29:50 | 显示全部楼层
guanyonglai 发表于 2017-1-11 15:09
不信书可以啊,你也得拿出自己的解决方案啊,但是我现在还看不太懂书上的这些程序 ...

你懂不懂关我卵事,我就是来吹比的
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2017-1-11 11:06:34 | 显示全部楼层
我觉得应该是文件中最后一个单词的末尾应该加一个\0类的用于结束的东西,但加了也还是不行啊
回复 支持 反对

使用道具 举报

发表于 2017-1-11 12:00:12 | 显示全部楼层
全信书还不如无书
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-11 15:09:37 | 显示全部楼层
sunny0o0 发表于 2017-1-11 01:00
全信书还不如无书

不信书可以啊,你也得拿出自己的解决方案啊,但是我现在还看不太懂书上的这些程序
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|感谢博安盈科技资助本网站|OpenCV中文网站 ( 粤ICP备13079875号-2  

GMT+8, 2017-4-28 04:48 , Processed in 0.116555 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表