首页 > 其他分享 >老师 help me T^T

老师 help me T^T

时间:2023-08-21 20:44:49浏览次数:20  
标签:me word help locale 老师 wstring start line string

编码问题(且vs编码高级保存设置UTF-8无用)

问题

建图时,从文件读入的数据是乱码(使用string保存)。

解决办法

vs改了没有用,去修改了数据文件的保存编码,顺应vs改成国标了。(治标不治本?)


新问题

智能问答时,从控制台读入一串汉字,遍历时1个汉字被拆成2个字符遍历,并且控制台输出无法显示,显示为空(因为要和 “的” 这个字进行分割匹配,使用wstring保存控制台的输入内容,使用for (wchar_t c : line)遍历)

  • 本应该达成的效果:按一个汉字一个汉字地遍历,且控制台能够正确显示wstring结果。
  • 解决方法:在函数开头设置 std::locale::global(std::locale("chs")); 将全局的 C++ 环境的地域(locale)设置为 "chs",以影响程序中的本地化行为,如字符集和数字格式等。
  • 效果:成功了。

其他待尝试的方法

  • 1.改用正则表达式处理
  • 2.安装别的库来处理字符集问题 比如boost库
  • 3.配置控制台的输出字符集支持选项并且想明白vs的编码问题
  • 4.不使用wstring,使用string,然后2个指针构成一个汉字,从而匹配“的”这个汉字

我的代码:

我的博客自己设置了一些javascript/css格式,所以下面的代码段是没有语法高亮的,最下面有我在vs上面的代码截图。

void smartQuery() {
	std::locale::global(std::locale("chs"));
	wstring line, start, word;
	cout << "\n输入你想查的关系链,例如 荀彧的主公的儿子\n";
	wcin >> line;
	wchar_t split = L'的';
	//我的想法是,"的"字作为分隔符 ,start用来保存路径里找到的当前人名,word用来保存关系
	//第一轮start=荀彧 word=主公
	//第二轮start=曹操 word=儿子
	//第三轮得出start=曹昂 结束查询
	for (wchar_t c : line) {
		if (c != split) {
			word.push_back(c);
		}
		if (c == split || c == line[line.size() - 1]) {
			if (start.empty()) {
				start = word;
			}
			else {
				//关系查找函数是之前功能的复用,只接受string参数,所以编写了wstring和string相互转化的2个函数
				string strStart = wstringToString(start);
				string strWord = wstringToString(word);
				strStart = findDirectlyByRelation(strStart, strWord);
				if (strStart == "") {
					cout << "查无此人!\n";
					return;
				}
				start = stringToWstring(strStart);
			}
			word.clear();
		}
	}
	wcout << start << endl;
}

标签:me,word,help,locale,老师,wstring,start,line,string
From: https://www.cnblogs.com/lmj00/p/17647049.html

相关文章

  • WPF实现Element UI风格的日期时间选择器
    背景业务开发过程中遇到一个日期范围选择的需求,和ElementUI的DateTimePicker组件比较类似,由两个日历控件组成,联动选择起始时间和结束时间。问题WPF中提供了一个DatePicker的控件,主要由DatePickerTextBox、Button和一个Calendar组成,其中Calendar是后台代码动态添加的,因此不能直......
  • VUE element-ui之table表格全局排序
    一调用后端接口排序功能步骤:标签中定义排序方法:<el-tableref="reset"v-loading="loading":data="tableData"height="520"border@sort-change="sortChange">要排序的字段......
  • 7. 利润表 / 损益表 Income Statement
    直接看表一些公式销售净额=总收入-销售退回和折让毛利=销售净额-销售成本经营性收益=毛利-销售费用-总务费用净利润=毛利-销售费用-总务费用-非经营性费用净利润=经营性收益-非经营性费用一些述语GrossSales总收入SalesReturnandSale......
  • SpringBoot复习:(49)NamedParameterJdbcTemplate用法
    packagecn.edu.tju.controller;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.autoconfigure.web.ServerProperties;importorg.springframework.boot.context.properties.EnableConfigurationProperties;importorg......
  • 北大ACM poj3589 Number-guessing Game
    Number-guessingGameTimeLimit:1000MS MemoryLimit:65536KTotalSubmissions:5805 Accepted:4204DescriptionLarrylikesplayingthenumber-guessinggame.Twoplayersareneededinagame.SupposetheyareXandY,andXpresentsanumberforYtogu......
  • 北大ACM poj3913 Gnome Sequencing
    GnomeSequencingTimeLimit:1000MS MemoryLimit:65536KTotalSubmissions:1267 Accepted:865DescriptionInthebookAllCreaturesofMythology,gnomesarekind,beardedcreatures,whilegoblinstendtobebossyandsimple-minded.Thegoblinslike......
  • 北大ACM poj1661 Help Jimmy
    HelpJimmyTimeLimit:1000MS MemoryLimit:10000KTotalSubmissions:7380 Accepted:2333Description"HelpJimmy"是在下图所示的场景上完成的游戏。场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。Jimmy老鼠在时刻0从高......
  • 北大ACM poj2141 Message Decowding
    MessageDecowdingTimeLimit:1000MS MemoryLimit:65536KTotalSubmissions:10326 Accepted:5672DescriptionThecowsarethrilledbecausethey'vejustlearnedaboutencryptingmessages.Theythinktheywillbeabletousesecretmessagestoplot......
  • java.lang.OutOfMemoryError: PermGen space
    PermGenspace的全称是PermanentGenerationspace,是指内存的永久保存区域OutOfMemoryError:PermGenspace从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被Load的时候被放入PermGenspace区域,它和和存放Inst......
  • 珠海先达盈致浅析MOM系统与MES系统的区别
    一、MOM系统与MES系统的区别MOM系统和MES系统是在制造业中较为重要的两类软件管理系统,它们在功能与应用上面有某些差别。MOM系统是一个综合性的的制造运营管理系统,它涵盖从生产计划到加工生产的整个生产制造过程。MOM系统主要关注运营管理,它可以在线监控和控制整个加工生产过程,包......