vs2015 C++读取文件输出内容,总是显示乱码

#include
#include
#include
#include
#include
using namespace std;
int main()
{
ifstream sfile("1.txt");
if (!sfile)
{
cerr << "无法打开文件" << endl;
system("pause");
return -1;
}

string line;
vector<string> word;
while (getline(sfile, line))
{
    word.push_back(line);
}
sfile.close();
//for (auto it :word)
vector<string>::const_iterator it = word.begin();
while (it != word.end())
{
    istringstream line_str(*it);
    string words;
    while (line_str >> words)
        cout << words << " ";
    cout << endl;
    ++it;
}
system("pause");
return 0;

}
图片说明

c++

15个回答

你将文件编码修改一下

csdn_zyp2015
南冥之鸟 getline(sfile, line);这条指令,sfile内容提示读取字符串内容出错!!!!这是什么原因啊!!!
2 年多之前 回复
csdn_zyp2015
南冥之鸟 调试了一下,不是输出的原因,读取文件内容的变量string line读出来的数据不对,这篇文章讲的是读取内容没问题,只是把utf8编码转化成国标的形式输出。
2 年多之前 回复
weixin_41632434
浩子乄 http://blog.csdn.net/zhancf/article/details/49930969 你可以去看一下这篇文章
2 年多之前 回复
csdn_zyp2015
南冥之鸟 回复weixin_41632434: 你好,几种文件编码都试了,输出的还是乱码,感觉修改文件编码,改的是编辑器编辑源文件的编码方式,对txt文件的读取没什么影响啊
2 年多之前 回复
csdn_zyp2015
南冥之鸟 回复weixin_41632434: 你好,几种文件编码都试了,输出的还是乱码,感觉修改文件编码,改的是编辑器编辑源文件的编码方式,对txt文件的读取没什么影响啊
2 年多之前 回复
weixin_41632434
浩子乄 回复南冥之鸟: 选“文件”菜单,“高级保存选项”菜单项,在“高级保存选项”对话框中,将“编码”修改掉,要使用的编码你可以自己尝试一下
2 年多之前 回复
csdn_zyp2015
南冥之鸟 属性里面设置的是“使用多字节字符集”,应该怎么修改文件编码?
2 年多之前 回复

应该是字符集问题,因为txt文件中存储的GBK字符集,你读取的时候使用你指定的字符集进行转换,的出来的就会是正常了,希望能帮到您!

csdn_zyp2015
南冥之鸟 getline(sfile, line),读取出来的变量line内容不对,难道是打开文件的原因??
2 年多之前 回复
csdn_zyp2015
南冥之鸟 属性里面设置的是“使用多字节字符集”,请问怎么修改呢
2 年多之前 回复

void mian()
{
stream = fopen("1.txt", "r");
if (stream == NULL)
printf("The file 1.txt was not opened\n");
else
{
/*fprintf(stream, "%s %ld %f %c", "helloworld",
65, 3.14, 'c');*/
/*Set pointer to beginning of file:*/
fseek(stream, 0, SEEK_SET);
char ch;
while ((ch = getc(stream)) != EOF)
putchar(ch);
}
}
用fopen()函数,输出的也是这种乱码,不知道哪里出现了问题

编码问题,如果是全部乱码,应该输入字符的编码与输出编码不一致;如果是中文乱码,应该是输出编码不支持中文。

csdn_zyp2015
南冥之鸟 你好,1.txt文件内容是“asdffghfsdf”,不知道是读取问题还是输出问题
2 年多之前 回复

不要用txt 换个编辑本文文件

csdn_zyp2015
南冥之鸟 换了个文本编辑器,也是一样的
2 年多之前 回复

应该跟你的vc版本语言有关

应该是输入字符的编码与输出编码不一致

csdn_zyp2015
南冥之鸟 getline(sfile, line),读取出来的变量line内容不对
2 年多之前 回复

用UltraEdit 打开txt,单步调试看你读取的内容。比对16进制数据,看看读取的是否一致

csdn_zyp2015
南冥之鸟 getline(sfile, line);这条指令,sfile内容提示读取字符串内容出错!!!!这是什么原因啊!!!
2 年多之前 回复

getline(sfile, line);这条指令,sfile内容提示读取字符串内容出错!!!!这是什么原因啊!!!

  • infile {_Filebuffer={_Set_eback=0xcccccccc <读取字符串的字符时出错。> _Set_egptr=0xcccccccc <读取字符串的字符时出错。> _Pcvt=0x00000000 ...} } std::basic_ifstream >
共15条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
vs2015 C++读取文件输出内容,总是显示乱码

#include <iostream> #include <fstream> #include <sstream> #include <string> #include <vector> using namespace std; int main() { ifstream sfile("1.txt"); if (!sfile) { cerr << "无法打开文件" << endl; system("pause"); return -1; } string line; vector<string> word; while (getline(sfile, line)) { word.push_back(line); } sfile.close(); //for (auto it :word) vector<string>::const_iterator it = word.begin(); while (it != word.end()) { istringstream line_str(*it); string words; while (line_str >> words) cout << words << " "; cout << endl; ++it; } system("pause"); return 0; } ![图片说明](https://img-ask.csdn.net/upload/201801/18/1516255217_940222.png)

python读取文件输出乱码(不含中文),好心人帮帮忙

data = '2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22' print "data =", data print type(data) james = data.strip().split(',') print james 输出的是['2-34\xef\xbc\x8c3\xef\xbc\x9a21\xef\xbc\x8c2.34\xef\xbc\x8c2.45\xef\xbc\x8c3.01\xef\xbc\x8c2\xef\xbc\x9a01\xef\xbc\x8c2\xef\xbc\x9a01\xef\xbc\x8c3\xef\xbc\x9a10\xef\xbc\x8c2-22']。。。 恶补了编码知识,两天了还没解决,帮帮我,谢谢好心人

C编程输出中文为什么显示乱码

从词典文件中读取数据,输出的时候为什么显示乱码? 代码如下: #include <stdio.h> 2 #include <string.h> 3 4 int main() 5 { 6 FILE *fp = fopen("text.txt","r"); 7 char english[32],chinese[64],attribute[8]; 8 int i=0,j=0,k=0; 9 int flag_null = 0, flag_p = 0; 10 while(!feof(fp)) 11 { 12 char ch = fgetc(fp); 13 if(ch == ' ') 14 { 15 flag_null = 1; 16 } 17 18 if(ch == '.') 19 { 20 flag_p = 1; 21 } 22 if(flag_null!=1) 23 { 24 english[i] = ch; 25 i++; 26 } 27 else if(isalpha(ch)||ch=='.') { 29 attribute[k] = ch; 30 k++; 31 } 32 else if(ch < 0) 33 { 34 chinese[j] = ch; 35 j++; 36 } 37 38 if(ch == '\n') 39 { 40 printf("%s %s %s\n",english,chinese,attribute); 41 } 42 43 } 44 45 fclose(fp); 46 } text.txt文件内容 across prep.横越 adv.横穿 输出: across .??越横穿? prep.adv.??越横穿?

c语言:关闭程序,再读取文件时出现开头的乱码,求助

![保存文件后的结果](https://img-ask.csdn.net/upload/201704/15/1492232723_293060.png) ![读取文件后的显示](https://img-ask.csdn.net/upload/201704/15/1492232763_96436.png) (请忽略功能文字,只是一个功能的完善,没有去修改) 以下是文件存储读取的代码 #include "record.h" //文件存储操作函数 void save(const BOOK *top) { const BOOK *p; FILE *fp; if(count==0) { printf("没有记录可存!"); return; } if((fp=fopen("BOOK.TXT","wb"))==NULL) { printf("不能打开文件!\n"); exit(1); } printf("\n存文件\n"); p=top; while(p) { fwrite(p,LEN,1,fp); p=p->next; } fclose(fp); printf("%d条记录已经存入文件,请继续操作。\n",count); } //文件读取操作函数 BOOK *load(BOOK *top) { FILE *fp; BOOK *p,*old; count=0; top->next=NULL; old=top; if((fp=fopen("BOOK.TXT","rb"))==NULL) { printf("打不开文件!\n"); exit(1); } printf("\n取文件...\n"); while(!feof(fp)) { ASK(p); if(1!=fread(p,LEN,1,fp)) break; else{ count=count+1; p->next=NULL; old->next=p; old=p; } } fclose(fp); printf("取入%d条记录。",count); return top; } /* #include "record.h" void writeToFile(){ FILE *out; out = fopen( "BOOK.txt", "wb" ); if(out==NULL){ printf("无法打开文件!\n"); return; } p=head; while(p!=NULL){ fwrite(p,LEN,1,out); p=p->next; printf("输出文件!\n"); } fclose(out); } void readFromFile(){ FILE in; in = fopen( "BOOK.txt", "rb" ); if(in==NULL){ printf("无法打开文件!\n"); return; } count=0; head=NULL; p=NULL; old=NULL; ASK(p); while(!feof(in)){ if(fread(p,LEN,1,in)!=1) break; if(head==NULL){ head=p; }else{ old->next=p; } old=p; count++; printf("读入文件!\n"); ASK(p); } old->next=NULL; printf("readin count:%d\n",count); fclose(in); }*/ 麻烦各位大神了

java根据模板修改内容后,生成word,修改后内容中文乱码

Java code package com.sunyard.test; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.Date; public class OperatorRTF { /** * 字符串转换为rtf编码 * * @param content * @return */ public String strToRtf(String content) { try { System.out.println(content); content=new String(content.getBytes(),"GB2312"); System.out.println(content); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } char[] digital = "0123456789ABCDEF".toCharArray(); StringBuffer sb = new StringBuffer(""); byte[] bs = null; bs = content.getBytes(); int bit; for (int i = 0; i < bs.length; i++) { bit = (bs[i] & 0x0f0) >> 4; sb.append("\\'"); sb.append(digital[bit]); bit = bs[i] & 0x0f; sb.append(digital[bit]); } return sb.toString(); } /** * 替换文档的可变部分 * * @param content * @param replacecontent * @param flag * @return */ public String replaceRTF(String content, String replacecontent, int flag) { String rc = strToRtf(replacecontent); String target = ""; System.out.println(rc); if (flag == 0) { target = content.replace("$timetop$", rc); } if (flag == 1) { target = content.replace("$info$", rc); } if (flag == 2) { target = content.replace("$idea$", rc); } if (flag == 3) { target = content.replace("$advice$", rc); } if (flag == 4) { target = content.replace("$infosend$", rc); } return target; } /** * 获取文件路径 * * @param flag * @return */ public String getSavePath() { String path = "D:\\"; File fDirecotry = new File(path); if (!fDirecotry.exists()) { fDirecotry.mkdirs(); } return path; } /** * 半角转为全角 */ public String ToSBC(String input) { char[] c = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == 32) { c[i] = (char) 12288; continue; } if (c[i] < 127) { c[i] = (char) (c[i] + 65248); } } return new String(c); } public void rgModel(String username, String content) { /* 构建生成文件名 targetname:12时10分23秒_username_记录.rtf */ Date current = new Date(); SimpleDateFormat sdf = new java.text.SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); String targetname = sdf.format(current).substring(11, 13) + "时"; targetname += sdf.format(current).substring(14, 16) + "分"; targetname += sdf.format(current).substring(17, 19) + "秒"; targetname += "_" + username + "_记录.doc"; /* 字节形式读取模板文件内容,将结果转为字符串 */ String strpath = getSavePath(); String sourname = strpath + "\\" + "档案利用登记单.rtf"; String sourcecontent = ""; InputStream ins = null; try { ins = new FileInputStream(sourname); byte[] b = new byte[1024]; if (ins == null) { System.out.println("源模板文件不存在"); } int bytesRead = 0; while (true) { bytesRead = ins.read(b, 0, 1024); // return final read bytes // counts if (bytesRead == -1) {// end of InputStream System.out.println("读取模板文件结束"); break; } // convert to string using bytes sourcecontent += new String(b, 0, bytesRead); } } catch (Exception e) { e.printStackTrace(); } /* 修改变化部分 */ String targetcontent = ""; /** * 拆分之后的数组元素与模板中的标识符对应关系 array[0]:timetop array[1]:info array[2]:idea * array[3]:advice array[4]:infosend */ String array[] = content.split("~"); // 2008年11月27日:更新模板之后时间无需自动填充 for (int i = 0; i < array.length; i++) { if (i == 0) { targetcontent = replaceRTF(sourcecontent, array[i], i); } else { targetcontent = replaceRTF(targetcontent, array[i], i); } } /* 结果输出保存到文件 */ try { FileWriter fw = new FileWriter(getSavePath() + "\\" + targetname, true); PrintWriter out = new PrintWriter(fw); System.out.println(targetcontent); if (targetcontent.equals("") || targetcontent == "") { out.println(sourcecontent); } else { out.println(targetcontent); } out.close(); fw.close(); System.out.println(getSavePath() + " 该目录下生成文件" + targetname + " 成功"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { OperatorRTF oRTF = new OperatorRTF(); // 被替换内容以"~"符号分割,处理的时候将其拆分为数组即可 String content = "2008Y10M12D9H-2008Y10M12D6H~idea~look~我们参照检验药品的方法~we"; oRTF.rgModel("cheney", content); } } 上面的代码是我在网上找到的一种java操作word的方法 java读取word文档时,虽然网上介绍了很多插件poi、java2Word、jacob、itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用);java2Word、jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄;itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法。经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,不需要借助任何插件,只需基本IO操作外加编码转换即可。rtf格式文件表面看来和doc没啥区别,都可以用word打开,各种格式都可以设定。 ----- 实现的功能:读取rtf模板内容(格式和文本内容),替换变化部分,形成新的rtf文档。 ----- 实现思路:模板中固定部分手动输入,变化的部分用$info$表示,只需替换$info$即可。 1、采用字节的形式读取rtf模板内容 2、将可变的内容字符串转为rtf编码 3、替换原文中的可变部分,形成新的rtf文档 这是原作者的想法,可我在使用过程中,发现替换内容中(我们参照检验药品的方法)这个中文,是不能显示的,在word里,把它转换成了iso-8859-1的编码了,不能正常显示中文,我都不知道应该在哪设置编码,才能让它正常显示,原word模板中的中文,可以正常显示,应该是在读取word模板的时候,把编码方式也读进去了,现在就是想请教一下前辈们,应该如何后,自己修改的那些中文,也可以正常显示呢 [b]问题补充:[/b] 汗,这里好象自己不能回复,所以我以这种形式回复。 先感谢一楼,二楼的回答,昨天我有事,请假没上班,所以没能及时回复,先道个歉。 先回答1楼的,在写的时候,我设置编码的话,感觉是无效的,不管我怎么设置,都没用。 再回答2楼的,特别说一下,我试了一下,发现生成的word里,那些修改部分的中文的编码形式改变了,只是还是乱码。后来我把unicode,ISO-8859-1,UTF-8,GB2312,GBK,甚至ASCII都试过了, word里都是不同形式的乱码,就是不出现汉字,真闷,我感觉是在 bs = content.getBytes("unicode"); 后,系统后来又默认的把这把转成了ISO-8859-1的形式. 可是 bs = content.getBytes("ISO-8859-1"); 我这么设置,word里的汉字是????? 真不知道为什么,要是ISO-8859-1,转ISO-8859-1,应该不会改变的哎 希望高手们,能继续解答,谢谢 [b]问题补充:[/b] 汪兆铭,您好,我不知道您一直观注这个问题,我以为要过会才能看到您的回答,所以,现在才刷新了这个页面,不好意思,先道个歉。 现在回到问题中,我照您的意思, bs = content.getBytes("unicode"); 改了一下,然后输入,可是依然不能正常显示中文,是不是,在哪,还需要再转换一次呢? [b]问题补充:[/b] mirzlm@126.com 谢谢,不知道与jdk版本或是什么的没有关系 [b]问题补充:[/b] 汪兆铭,您好,我看了一下您发的东西,我发现了问题的所在,竟然是在表格单元格里面的,就替换出来的是乱码,在表格单元格外面的,是可以正常显示的,您可以去试试,把替换的那个,放在表格里,看看,会不会成功,谢谢你的帮助 [b]问题补充:[/b] 谢谢您,给我这么多的帮助,那应该是我的那个rtf模板的问题了,真的很感谢,谢谢,谢谢,再谢谢

ifstream读取错误,求解?

我不明白为什么会发生这样,求解!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ``` #include//bits/stdc++.h #include//help.h cin>>name; string c; ifstream filein14("情况.txt",ios::in); while(getline(filein14,c)) { length_word[flag]=c.length()-1; debug(length_word[flag]); flag+=1; if(c==name) { flag2=1; break; } } ``` help.h的内容: ``` #include//bits/stdc++.h using namespace std; void debug(int a) { cout<<a<<endl; } void debug(char a) { cout<<a<<endl; } void debug(char* a) { cout<<a<<endl; } void debug(string a) { cout<<a<<endl; } ``` 情况.txt的内容(有部分中文乱码): ``` awdrgy #1.0#3-3 dorothy #2.2#0-0 sssusie #1.0#3-0 ߴߴ #1.0#4-0 perry #4.0#7-2 Ʈ������ #4.0#7-0 ``` 输出: ``` 8 7 6 7 6 7 3 7 4 ``` 解释:我输出了文件每行的长度 谁能告诉我为什么?

各位大神,为啥我这个程序运行之后会乱码?怎么样才能不乱码?

代码运行之后成这样了 ![图片说明](https://img-ask.csdn.net/upload/201604/14/1460602344_472443.png) 下面是代码 package demo12.datademo; import java.io.DataOutputStream ; import java.io.File ; import java.io.FileOutputStream ; public class DataOutputStreamDemo{ public static void main(String args[]) throws Exception{ // 所有异常抛出 DataOutputStream dos = null ; // 声明数据输出流对象 File f = new File("d:" + File.separator + "order.txt") ; // 文件的保存路径 dos = new DataOutputStream(new FileOutputStream(f)) ; // 实例化数据输出流对象 String names[] = {"衬衣","手套","围巾"} ; // 商品名称 float prices[] = {98.3f,30.3f,50.5f} ; // 商品价格 int nums[] = {3,2,1} ; // 商品数量 for(int i=0;i<names.length;i++){ // 循环输出 dos.writeChars(names[i]) ; // 写入字符串 dos.writeChar('\t') ; // 写入分隔符 dos.writeFloat(prices[i]) ; // 写入价格 dos.writeChar('\t') ; // 写入分隔符 dos.writeInt(nums[i]) ; // 写入数量 dos.writeChar('\n') ; // 换行 } dos.close() ; // 关闭输出流 } }; package demo12.datademo; import java.io.DataInputStream ; import java.io.File ; import java.io.FileInputStream ; public class DataInputStreamDemo{ public static void main(String args[]) throws Exception{ // 所有异常抛出 DataInputStream dis = null ; // 声明数据输入流对象 File f = new File("d:" + File.separator + "order.txt") ; // 文件的保存路径 dis = new DataInputStream(new FileInputStream(f)) ; // 实例化数据输入流对象 String name = null ; // 接收名称 float price = 0.0f ; // 接收价格 int num = 0 ; // 接收数量 char temp[] = null ; // 接收商品名称 int len = 0 ; // 保存读取数据的个数 char c = 0 ; // '\u0000' try{ while(true){ temp = new char[200] ; // 开辟空间 len = 0 ; while((c=dis.readChar())!='\t'){ // 接收内容 temp[len] = c ; len ++ ; // 读取长度加1 } name = new String(temp,0,len) ; // 将字符数组变为String price = dis.readFloat() ; // 读取价格 dis.readChar() ; // 读取\t num = dis.readInt() ; // 读取int dis.readChar() ; // 读取\n System.out.printf("名称:%s;价格:%5.2f;数量:%d\n",name,price,num) ; } }catch(Exception e){} dis.close() ; } };

程序运行后txt文本出现乱

程序运行后文本文件出现乱码,四个warning是相同的问题, 看了很多帖子但都没有相关的详细回答 请问这种情况该如何解决 ![图片说明](https://img-ask.csdn.net/upload/201912/12/1576134842_865518.png) ![图片说明](https://img-ask.csdn.net/upload/201912/12/1576134945_774123.png) ![图片说明](https://img-ask.csdn.net/upload/201912/12/1576135365_278865.png) ``` #include<iostream> #include<string.h> #include<iomanip> #include<fstream> #include<stdio.h> #include <stdlib.h> using namespace std; int count=0; class CData //定义数据基类 { public: CData(){}; virtual int Compare(CData &)=0; virtual void Show()=0; virtual ~CData(){}; }; class CNode //定义结点基类 { private: CData *pData; //用于指向数据类的指针 CNode *pNext; //用于指向链表的后向指针 public: void InputData(CData *pdata){pData=pdata;} //输入数据 void ShowNode(){pData->Show();} //打印一个节点的数据 CData *GetData(){return pData;} friend class CList; //定义链表类为基类 }; class CList { CNode *pHead; //链表头结点指针 public: CList(){pHead=0;}; ~CList(){DeleteList();} void AddNode(CNode *pnode); //在首部添加结点 CNode *DeleteNode(CNode *); //删除一个指定的结点,返回该结点的指针 CNode *Search(CData &); //查找一个指定的数据,返回该数据所在的结点在链表的指针,未找到返回0 bool IsExist(CData &); void ShowList(); //打印整个链表 void DeleteList(); //删除整个链表 CNode *GetListHead(){return pHead;} //返回链表首结点 CNode *GetListNextNode(CNode *pnode); //返回链表指定结点的下一个结点 }; CNode *CList::GetListNextNode(CNode *pnode) //返回链表指定结点的下一个结点 { CNode *p1=pnode; return p1->pNext; }; void CList::AddNode(CNode *pnode) //在首部添加结点 { if (pHead==0) //如果是空链表,插入的结点是唯一的结点 { pHead=pnode; pnode->pNext=0; return; } else //否则,插入到链表首部 { pnode->pNext=pHead; pHead=pnode; } }; CNode *CList::DeleteNode(CNode *pnode) //删除一个指定的结点,返回该结点的指针 { CNode *p1,*p2; p1=pHead; //指向首结点 while(p1!=pnode&&p1->pNext!=0) //寻找要删除的结点 { p2=p1; p1=p1->pNext; //结点p2始终在p1的后面 } if (p1==pHead) //如果要删除的是首结点 { pHead=pHead->pNext; //将首结点后移 return pnode; } p2->pNext=p1->pNext; //p1指向被删除的结点,将p2结点与p1后面的结点连接起来 return pnode; } CNode *CList::Search(CData &data) //查找一个指定的数据,返回指针,若未找到返回0 { CNode *p1=pHead; while(p1) //从头结点开始查找 { if (p1->pData->Compare(data)==0) return p1; //找到后返回结点指针 p1=p1->pNext; } return 0; //搜索完找不到,返回空指针0 } void CList::ShowList() //打印整个链表 { CNode *p1=pHead; while(p1) { p1->pData->Show(); p1=p1->pNext; } } void CList::DeleteList() //删除整个链表结点 { CNode *p1,*p2; p1=pHead; while(p1) { delete p1->pData; p2=p1; p1=p1->pNext; delete p2; } } class Repository:public CData //库存为记录,为数据基类的公有派生类 { private : char szName[20]; //库存中数据:商品名、商品数量和入库价格 unsigned int szNumber; char szPrice[20]; char szN; CList ShList; public: Repository(); //构造函数 Repository(char *name,int number,char *price); void SetRecord(char *name, int number,char *price); //输入数据函数 int Compare(CData &); //比较函数,比较商品名 void Show(); void AddRecord(); void Display(); void LookUpRecord(); void DeleteRecord(); void ModifyRecord(); void SaveToFile(); void Operate(string &strChoice); void ReadFromFile(); void Output(); }; Repository::Repository() { strcpy(szName,"\0"); szNumber=0; strcpy(szPrice,"\0"); } Repository::Repository(char *name,int number,char *price) { strcpy(szName,name); szNumber=number; strcpy(szPrice,price); szN=name[0]; } void Repository::SetRecord(char *name, int number,char *price) //输入数据函数 { strcpy(szName,name); szNumber=number; strcpy(szPrice,price); szN=name[0]; } int Repository::Compare(CData &data) //比较商品名 { Repository &temp=(Repository &)data; return strcmp(szName,temp.szName); } void Repository::Show() //打印一个结点的数据 { cout<<setw(15)<<szName<<setw(15)<<szNumber<<setw(15)<<szPrice<<endl; } void Repository::AddRecord() //将记录添加到链表中 { CNode *pNode; Repository *pSh; char szName[20],szPrice[20]; unsigned int szNumber; cout<<"请输入新商品名(输入0退出,并进入系统菜单):"; cin>>szName; while(strcmp(szName,"0")) { cout<<"请输入新商品入库价格: "; cin>>szPrice; cout<<"请输入新商品数量: "; cin>>szNumber; pSh=new Repository; //生成新的数据累对象 pSh->SetRecord(szName,szNumber,szPrice); //数据类对象赋值 pNode=new CNode; //生成新的结点 pNode->InputData(pSh); //结点插入链表 ShList.AddNode(pNode); count++; cout<<"请输入新商品名(输入0退出,并进入系统菜单) "; cin>>szName; } cout<<endl<<endl; } void Repository::Display() //显示全部链表数据 { cout<<"当前操作共有"<<count<<"条新商品的添加纪录。\n\n"; cout<<"目前库存共有商品信息记录是:\n\n"; cout<<setiosflags(ios_base::left)<<setw(15)<<"商品名"<<setw(15)<<"商品数量"<<setw(15)<<"入库价格"<<endl<<endl; ShList.ShowList(); cout<<endl<<endl; system("pause"); system("cls"); } void Repository::LookUpRecord() // 按照商品名查找 { CNode *pLook; char szName[20]; cout<<"请输入您需要查找的商品名(输入0退出,并进入系统菜单):"; cin>>szName; while (strcmp(szName,"0")) { Repository sh(szName,0,"0"); //生成结点 pLook=ShList.Search(sh); //查找指定结点的数据 if (pLook) { cout<<"在库存商品信息记录中找到商品:"<<szName<<",内容是:"<<endl; cout<<setw(15)<<"商品名"<<setw(15)<<"商品数量"<<setw(15)<<"入库价格"<<endl; pLook->ShowNode(); } else cout<<"在库存商品信息记录中找不到商品:"<<szName<<"。"<<endl; cout<<"请输入您需要查找的商品名(输入0退出,并进入系统菜单):"; cin>>szName; } cout<<endl<<endl; } void Repository::DeleteRecord() //在链表中删除指定的结点的数据 { CNode *pLook; char szName[20]; cout<<"请输入您需要删除的商品名(输入0退出,并进入系统菜单):"; cin>>szName; while(strcmp(szName,"0")) { Repository sh(szName,0,"0"); pLook=ShList.Search(sh); if (pLook) //删除时应先查找出结点 { cout<<"在库存商品信息记录中找到商品:"<<szName<<",内容是:"<<endl; cout<<setw(15)<<"商品名"<<setw(15)<<"商品数量"<<setw(15)<<"入库价格"<<endl; pLook->ShowNode(); cout<<"请确定是否删除此商品信息记录(Y/N)【确定删除请输入Y或y,取消删除请输入N或n】:"; char ok; cin>>ok; if (ok=='Y'||ok=='y') { ShList.DeleteNode(pLook); cout<<szName<<"的信息记录删除成功!"<<endl; delete pLook; count--; } else if(ok=='N'||ok=='n') cout<<szName<<"的信息记录删除失败!"<<endl; } else cout<<"在库存商品信息记录中找不到商品:"<<szName<<"。"<<endl; cout<<"请输入您需要删除的商品名(输入0退出,并进入系统菜单):"; cin>>szName; } cout<<endl<<endl; } void Repository::ModifyRecord() //修改商品记录 { CNode *pLook; Repository *pSh; char szName[20],szPrice[20]; unsigned int szNumber; cout<<"请输入您需要修改的商品名(输入0退出,并进入系统菜单):"; cin>>szName; while(strcmp(szName,"0")) { Repository sh(szName,0,"0"); pLook=ShList.Search(sh); if (pLook) //修改时应先查找出结点 { cout<<"在库存商品信息记录中找到商品:"<<szName<<",内容是:"<<endl; cout<<setw(15)<<"商品名"<<setw(15)<<"商品数量"<<setw(15)<<"入库价格"<<endl; pLook->ShowNode(); cout<<"-----下面开始修改-----"<<endl<<"请输入修改后的商品名: "; cin>>szName; cout<<"请输入修改后的商品数量:"; cin>>szNumber; cout<<"请输入修改后的商品入库价格: "; cin>>szPrice; cout<<"请确定是否修改此记录(Yes (Y) or No(N)):"; char ok; cin>>ok; if (ok=='Y'||ok=='y') { pSh=new Repository; pSh->SetRecord(szName,szNumber,szPrice); pLook->InputData(pSh); cout<<szName<<"的信息记录修改成功!"<<endl; } else if(ok=='N'||ok=='n') cout<<szName<<"的信息记录修改失败!"<<endl; } else cout<<" 在库存商品信息记录中找不到"<<szName<<","<<endl; cout<<" 请输入您需要修改的商品名(输入0退出,并进入系统菜单):"; cin>>szName; } } void Repository::Output() { CNode *pLook; Repository *pSh; char szName[20]; unsigned int szNumber; cout<<"请输入您需要出库的商品名(输入0退出,并进入系统菜单):"; cin>>szName; while(strcmp(szName,"0")) { Repository sh(szName,0,"0"); pLook=ShList.Search(sh); if (pLook) //修改时应先查找出结点 { pSh=(Repository *)pLook->GetData(); cout<<"在库存商品信息记录中找到商品:"<<szName<<",内容是:"<<endl; cout<<setw(15)<<"商品名"<<setw(15)<<"商品数量"<<setw(15)<<"入库价格"<<endl; pLook->ShowNode(); if (0==pSh->szNumber) { cout<<"该商品缺货,请及时补充!"<<endl; } else { cout<<"请输入您要取出的商品数量:"; cin>>szNumber; cout<<"请确定是否取出该商品( Yes (Y) or No(N) ):"; char ok; cin>>ok; if(ok=='Y'||ok=='y') { if(pSh->szNumber<=szNumber) { cout<<szName<<"您要求的商品数量大于仓库中的数量,故全部输出"<<pSh->szNumber<<" 个商品"<<endl; pSh->szNumber=0; } else { pSh->szNumber-=szNumber; cout<<szName<<"您已取出 "<<szNumber<<" 个商品"<<endl; } cout<<szName<<"成功取出!"<<endl; } else if(ok=='N'||ok=='n') cout<<szName<<"您取消了该操作"<<endl; } } else cout<<" 在库存商品信息记录中找不到"<<szName<<","<<endl; cout<<" 请输入您需要出库的商品名(输入0退出,并进入系统菜单):"; cin>>szName; } } void Repository::SaveToFile() //将链表中的数据保存在文件中 { ofstream outfile("repository.txt",ios::binary); if(! outfile) { cout<<"数据文件打开错误,没有将数据存入文件!\n"; return; } CNode *pnode; Repository *pSh; string strName,strNumber; pnode=ShList.GetListHead(); //取出链表首结点指针 while(pnode) { pSh=(Repository *)pnode->GetData(); //返回结点指向的数据域指针 outfile.write((char *)pSh,sizeof(Repository)); //将数据域写入文件 pnode=ShList.GetListNextNode(pnode); // 取下一结点的指针 } outfile.close(); } void Repository::ReadFromFile() //在程序开始先查找有无数据文件,找到后读取文件数据 { ifstream infile("repository.txt",ios::binary); if(! infile) { cout<<"没有数据文件,请您先添加!\n\n"; return; } CNode *pNode; Repository *pSh; while(! infile.eof()) { pSh=new Repository; //定义数据域对象 infile.read((char *)pSh,sizeof(Repository)); pNode=new CNode; pNode->InputData(pSh); //数据域对象内容生成结点 ShList.AddNode(pNode); //将结点加入链表 } ShList.DeleteNode(pNode); //由于文件多读一次,所以将首结点删除 infile.close(); } void Repository::Operate(string &strChoice) //根据主菜单选项进行操作 { if (strChoice=="1") AddRecord(); else if (strChoice=="2") Display(); else if (strChoice=="3") LookUpRecord(); else if (strChoice=="4") DeleteRecord(); else if(strChoice=="5") ModifyRecord(); else if(strChoice=="6") Output(); else if (strChoice=="0") SaveToFile(); else cout<<"对不起,您的输入有误,请重新输入您的选择: "; } int main() { Repository repository; cout<<"*******************************************************************\n\n"; cout<<" 欢迎进入库存管理系统 \n\n"; cout<<"*******************************************************************\n\n"; repository.ReadFromFile(); //从文件中输入数据 string strChoice; //接受主菜单选项 do { cout<<"【欢迎进入系统菜单】:\n\n\n"; cout<<" <1>.添加新商品信息记录\n\n"; cout<<" <2>.显示库存中商品信息记录内容\n\n"; cout<<" <3>.根据商品名查询库存中商品信息记录\n\n"; cout<<" <4>.根据商品名删除库存中商品信息记录\n\n"; cout<<" <5>.根据商品名修改库存中商品信息记录\n\n"; cout<<" <6>.商品出库\n\n"; cout<<" <0>.退出系统\n\n\n"; cout<<"【请输入您的选择】:"; cin>>strChoice; system("cls"); repository.Operate(strChoice); }while(strChoice!="0"); cout<<"***********************************************************************\n\n"; cout<<" ------------******欢迎再次使用库存管理系统******---------- \n\n"; cout<<"***********************************************************************\n\n"; system("pause"); } ```

c++编写旅店信息管理系统

在运行过程中Restaurant 文件出现乱码,不知该如何解决? 源代码如下: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #define MIN 1 //宏定义房间序号的最小值 #define MAX 30 //宏定义房间序号的最大值 #define LEN sizeof(struct Hotel) //用LEN代替结构体的"长度" char menu_select(); //函数声明 struct Hotel * regeist(); void in_information(); void out_information(); void search_number(); void show_all(); void search_name(); struct Hotel * change_change(); void change_save(struct Hotel *Q); void change(); void fire(); struct Hotel * fire_delet(); void fire_save(struct Hotel *Q); void check(int n); struct Hotel *load(); struct Hotel //定义全局结构体变量 { int room_number; char name [20]; char sex[10]; char ID [20]; float paid[10]; int inyear ; int inmonth ; int inday ; struct Hotel *next ; }; char menu_select () //定义menu_select函数,用来完成菜单功能 { char select ; printf ("\n\n--------------------------欢迎使用旅店信息管理系统---------------------------\n\n"); printf ("1.创建旅店信息\n2.查看旅店信息\n3.查看某一房间信息\n4.查看旅客信息\n"); printf ("5.查找某一旅客信息\n6.旅客入住\n7.旅客换房\n8.旅客退房\n9.退出管理系统\n"); printf ("\n-----------------------------------------------------------------------------\n"); select=getch(); return select ; //返回select的值 } void in_information() //定义in_information函数,完成创建旅店信息功能 { FILE *fp; //定义文件指针 char ch,choice[2]; printf ("\n确定创建新的旅店信息吗?该操作将清除现有的旅店信息!(y/n):"); scanf ("%s",choice); if((strcmp(choice,"Y")!=0)&&(strcmp(choice,"y")!=0)) return; if ((fp=fopen("information.txt","w"))==NULL) { printf ("无法打开文件!\n"); getch(); exit(0); } printf("\n请创建新的旅店信息(以#结束):\n"); //提示输入旅店信息 ch=getchar(); while (ch!='#') //判断是否结束输入信息 { fputc(ch,fp); ch=getchar(); } fclose (fp); printf ("\n创建信息成功!"); //提示创建信息成功 } void out_information() //定义out_information函数,完成查看旅店信息功能 { FILE *fp; char ch ; if ((fp=fopen("information.txt","r"))==NULL) { printf ("无法打开文件!\n"); getch(); exit(0); } ch=fgetc(fp); system("cls"); printf("\n\n\t\t\t旅店信息介绍: (若没有信息请返回创建)"); //开始输出旅店信息 printf ("\n-------------------------------------------------------------------------------\n\n\t"); while (ch!=EOF) { putchar(ch); ch=fgetc(fp); } fclose(fp); //文件用后一定要关闭 } struct Hotel * regeist () //定义regeist函数,用来完成旅客入住功能 { FILE *fp ; //定义文件指针 char ch[2] ; int number ; struct Hotel *head,*p1,*p2 ; head=NULL ; if((fp=fopen("resturant.txt","a+"))==NULL) { printf ("无法打开文件!\n"); getch(); exit(0); } do { p1=(struct Hotel *)malloc(LEN); //开辟新的节点 p2=(struct Hotel *)malloc(LEN); if ((p1==NULL)||(p2==NULL)) { printf ("动态内存分配失败!\n"); //如果动态内存分配失败,返回失败信息 getch(); exit(0); } printf ("\n请登记入住信息!\n"); //开始登记旅客信息 printf ("roomnumber(%d~%d):",MIN,MAX); scanf ("%d",&number); if (number<MIN||number>MAX) //假设该旅店只有1~30间房间 { printf ("\a\nError !"); return 0; } check (number); //检查该房间是否已经有旅客入住了 p1->room_number=number ; //在该房间没有旅客时,登记入住 printf ("name:\t"); scanf ("%s",&p1->name); printf ("sex:\t"); scanf ("%s",&p1->sex); printf ("ID:\t"); scanf ("%s",&p1->ID); printf ("paid:\t"); scanf ("%s",&p1->paid); printf ("date(年月日空格隔开):"); scanf ("%d %d %d",&p1->inyear,&p1->inmonth,&p1->inday); p1->next=NULL ; if(head==NULL) //将输入的信息保存到链表 { head=p1; p2=p1 ; } else { p2->next=p1; p2=p1 ; } fwrite(p2,LEN,1,fp); //将链表信息保存到磁盘文件 printf ("\n请选择是否继续登记信息 (y/n):"); //判断是否继续登记旅客信息 scanf ("%s",ch); if((strcmp(ch,"Y")!=0)&&(strcmp(ch,"y")!=0)) { fclose (fp); printf ("\n登记旅客入住信息成功!"); return(0); } }while(1) ; return (head) ; //登记完成后返回头链表指针 } void search_number () //定义search_number函数,用来完成查看某一房间的信息 { char ch[2] ; int room_number ; //room_number用来储存需要查询的roomnumber struct Hotel *head, *pa ; head=load(); printf ("\n请输入需要查看的房间序号:(%d~%d):",MIN,MAX); scanf ("%d",&room_number); pa= head->next; if (room_number<MIN||room_number>MAX) //Error时,容错判断 { printf ("\a\nError!"); return ; } for(;;) //for语句循环 { if (pa) { if(room_number==pa->room_number) //遍历链表,如果找到相应信息,则输出 { printf ("\n"); printf ("roomnumber:\t%d",pa->room_number); printf ("\n"); printf ("name:\t\t%s",pa->name); printf ("\n"); printf ("sex:\t\t%s",pa->sex); printf ("\n"); printf ("ID:\t\t%s",pa->ID); printf ("\n"); printf ("paid:\t\t%s",pa->paid); printf ("\n"); printf ("%d %d %d",pa->inyear,pa->inmonth,pa->inday); printf ("\n"); printf ("\n请选择是否继续查看信息(y/n):\n"); //提示是否继续查看 scanf ("%s",ch); if((strcmp(ch,"Y")!=0)&&(strcmp(ch,"y")!=0)) { getch(); return; } else { printf ("\n请输入需要查看的房间序号:(%d~%d):",MIN,MAX); scanf ("%d",&room_number); pa= head->next; if (room_number<MIN||room_number>MAX) { printf ("\a Error !"); return; } continue ; //跳出该层循环 } } pa = pa->next; //时pa的下一个指针赋值给pa } else { printf ("\n该房间还没有旅客入住"); //如果该房间还没有旅客入住,返回相应信息 return; } } } void show_all() //定义是show_all函数,用来显示所有旅客信息 { struct Hotel *head, *pa ; head=load(); pa= head->next; printf ("\n所有入住旅客的信息如下:\n"); while (pa) //显示所有的旅客信息 { printf ("\n"); printf ("roomnumber:\t%d",pa->room_number); printf ("\n"); printf ("name:\t\t%s",pa->name); printf ("\n"); printf ("sex:\t\t%s",pa->sex); printf ("\n"); printf ("ID:\t\t%s",pa->ID); printf ("\n"); printf ("paid:\t\t%s",pa->paid); printf ("\n"); printf ("date:\t\t%d %d %d",pa->inyear,pa->inmonth,pa->inday); printf ("\n"); pa = pa->next; } } void search_name () //定义search_name函数,用来完成查看某一旅客的信息 { char ch[2] ; char inname[20] ; //用数组inname[20]来储存需要查询的旅客name struct Hotel *head, *pa ; head=load(); printf ("\n请输入需要查看的旅客姓名:"); scanf ("%s",inname); pa= head->next; for (;;) { if (pa) { if(strcmp(inname,pa->name)==0) { printf ("\n"); printf ("roomnumber:\t%d",pa->room_number); printf ("\n"); printf ("name:\t\t%s",pa->name); printf ("\n"); printf ("sex:\t\t%s",pa->sex); printf ("\n"); printf ("ID:\t\t%s",pa->ID); printf ("\n"); printf ("paid:\t\t%s",pa->paid); printf ("\n"); printf ("date:\t\t%d %d %d",pa->inyear,pa->inmonth,pa->inday); printf ("\n"); printf ("\n请选择是否继续查看信息(y/n):\n"); scanf ("%s",ch); if((strcmp(ch,"Y")!=0)&&(strcmp(ch,"y")!=0)) { getch(); return; } else { printf ("\n请输入需要查看的旅客姓名:"); scanf ("%s",inname); pa= head->next; continue ; } } pa = pa->next; } else { printf ("\n没有查到该旅客的信息"); //没有此人时,返回相应信息 return ; } } } void change() { struct Hotel *M ; M=change_change(); change_save(M); } struct Hotel * change_change () { int room_number ; //room_number用来储存需要换房的roomnumber int newroom_number ; struct Hotel *head, *pa ; head=load(); printf ("\n请输入需要换房的房间序号:(%d~%d):",MIN,MAX); scanf ("%d",&room_number); if (room_number<MIN||room_number>MAX) //容错判断 { printf ("\aError!"); exit(0) ; } pa= head->next; for (;;) //for语句循环 { if (pa) { if(room_number==pa->room_number) { printf ("\n"); printf ("roomnumber:\t%d",pa->room_number); printf ("\n"); printf ("name:\t\t%s",pa->name); printf ("\n"); printf ("sex:\t\t%s",pa->sex); printf ("\n"); printf ("ID:\t\t%s",pa->ID); printf ("\n"); printf ("paid:\t\t%s",pa->paid); printf ("\n"); printf ("date:\t\t%d %d %d",pa->inyear,pa->inmonth,pa->inday); printf ("\n"); printf ("\n请输入需要换到的房间序号:(%d~%d):",MIN,MAX); scanf ("%d",&newroom_number); if (newroom_number<MIN||newroom_number>MAX) { printf ("\aError!"); exit(0); } check (newroom_number); pa->room_number=newroom_number ; break ; } pa = pa->next; } else { printf ("\n该房间还没有旅客入住!\n"); exit(0); } } return (head) ; } void change_save(struct Hotel *Q) { FILE *fp ; struct Hotel *L ; L=Q->next ; if((fp=fopen("resturant.txt","wb"))==NULL) { printf ("无法打开文件!\n"); getch(); exit(0); } while(L) { fwrite(L,LEN,1,fp); L=L->next ; } fclose(fp); printf ("\n换房成功!"); } void fire() { struct Hotel *M ; M=fire_delet(); fire_save(M); } struct Hotel * fire_delet() { char inname[20] ; //用数组inname[20]来储存需要退房旅客name struct Hotel *head, *previous,*pa ; head=load(); previous=(struct Hotel *)malloc(LEN); //开辟新的节点 if (previous==NULL) { printf ("动态内存分配失败!\n"); //如果动态内存分配失败,返回失败信息 getch(); exit(0); } printf ("\n请输入需要退房的旅客姓名:"); scanf ("%s",inname); pa=head->next ; for(;;) { if (pa) { if(strcmp(inname,pa->name)==0) { printf ("\n"); printf ("roomnumber:\t%d",pa->room_number); printf ("\n"); printf ("name:\t\t%s",pa->name); printf ("\n"); printf ("sex:\t\t%s",pa->sex); printf ("\n"); printf ("ID:\t\t%s",pa->ID); printf ("\n"); printf ("paid:\t\t%s",pa->paid); printf ("\n"); printf ("date:\t\t%d %d %d",pa->inyear,pa->inmonth,pa->inday); printf ("\n"); if(pa==head) { head=pa->next; return head ; } else { previous=head ; while(previous->next != pa) //找到需要查找节点的前一个节点 previous=previous->next ; if (pa->next==NULL) previous->next=NULL ; else previous->next=pa->next ; break ; } } pa = pa->next; } else { printf ("\n没有查找到该旅客的信息!\n"); getch(); exit(0); } } return (head) ; } void fire_save(struct Hotel *Q) { FILE *fp ; struct Hotel *L ; L=Q->next ; if((fp=fopen("resturant.txt","wb"))==NULL) { printf ("无法打开文件!\n"); getch(); exit(0); } while(L) { fwrite(L,LEN,1,fp); L=L->next ; } fclose(fp); printf ("\n退房成功!"); } void check(int n) //定义check函数,用来检查登记时房间是否已经有旅客入住 { FILE *fp ; struct Hotel *head, *pa,*pb, *s ; pa=(struct Hotel *)malloc(LEN); //开辟新的节点 pb=(struct Hotel *)malloc(LEN); s =(struct Hotel *)malloc(LEN); head = pb; if((pa==NULL)||(pb==NULL)||(s==NULL)) { printf ("内存分配失败!\n"); getch(); exit(0); } if((fp=fopen("resturant.txt","rb"))==NULL) { printf ("无法打开文件!\n"); getch(); exit(0); } while (fread (s,LEN,1,fp)) //读取当前的信息,并存到链表中 { pb->next = s; pb = s; s = (struct Hotel *)malloc(LEN); } pb->next =NULL; pa=head ; while (pa) { if (pa->room_number==n) { printf ("\n%d号房间已经有旅客入住了!\n",n); getch(); exit(0); } pa=pa->next ; } } struct Hotel *load() //定义load函数读取当前的信息,并存到链表中 { FILE *fp ; struct Hotel *head,*pb, *s ; pb=(struct Hotel *)malloc(LEN); //开辟新的节点 s =(struct Hotel *)malloc(LEN); if((pb==NULL)||(s==NULL)) { printf ("动态内存分配失败!\n"); getch(); exit(0); } if((fp=fopen("resturant.txt","rb"))==NULL) { printf ("无法打开文件!\n"); getch(); exit(0); } head = pb; while (fread (s,LEN,1,fp)) //读取当前的信息,并存到链表中 { pb->next = s; pb = s; s = (struct Hotel *)malloc(LEN); } pb->next =NULL; return head ; //返回链表的头指针 } int main () //主函数部分,调用若干子函数完成相应的功能 { char choice ; do { choice=menu_select(); switch (choice) //switch 语句,选择判断 { case '1':in_information();break; case '2':out_information();break; case '3':search_number();break; case '4':show_all();break; case '5':search_name();break; case '6':regeist();break; case '7':change();break; case '8':fire();break; case '9':exit(0);break; //退出旅店信息管理系统 default :printf ("\aError !");break ; //default 语句 } printf ("\n\n请按任意键继续 !\n"); getch(); system("cls"); }while(1); return 0 ; }

Java学习的正确打开方式

在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。

程序员必须掌握的核心算法有哪些?

由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

写了很久,这是一份最适合/贴切普通大众/科班/非科班的『学习路线』

说实话,对于学习路线这种文章我一般是不写的,大家看我的文章也知道,我是很少写建议别人怎么样怎么样的文章,更多的是,写自己的真实经历,然后供大家去参考,这样子,我内心也比较踏实,也不怕误导他人。 但是,最近好多人问我学习路线,而且很多大一大二的,说自己很迷茫,看到我那篇 普普通通,我的三年大学 之后很受激励,觉得自己也能行,(是的,别太浪,你一定能行)希望我能给他个学习路线,说...

15 个优秀开源的 Spring Boot 学习项目,一网打尽!

Spring Boot 算是目前 Java 领域最火的技术栈了,松哥年初出版的 《Spring Boot + Vue 全栈开发实战》迄今为止已经加印了 8 次,Spring Boot 的受欢迎程度可见一斑。经常有人问松哥有没有推荐的 Spring Boot 学习资料?当然有!买松哥书就对了,哈哈。除了书呢?当然就是开源项目了,今天松哥整理了几个优质 Spring Boot 开源项目给大家参考,希望...

Redis面试题(2020最新版)

文章目录概述什么是RedisRedis有哪些数据类型Redis有哪些优缺点Redis的应用场景为什么要用 Redis /为什么要用缓存为什么要用 Redis 而不用 map/guava 做缓存?Redis为什么这么快持久化什么是Redis持久化?Redis 的持久化机制是什么?各自的优缺点?如何选择合适的持久化方式Redis持久化数据和缓存怎么做扩容?过期键的删除策略Redis的过期键的删除策略R...

Java知识体系最强总结(2020版)

更新于2019-12-15 10:38:00 本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。 文章目录...

一个“/”键,封锁了整个互联网

正所谓无BUG不生活,从你含辛茹苦地码着第一行代码开始,bug就如影随形。 其实,bug 被自己或者是测试人员发现都是好事;但如果是被用户发现,又或者导致了客户和公司的巨额损失……这些未知后果,就如同悬在头顶的一把利刃,让人脊背发凉…… 但一个小小的bug,可能带给你惊吓,也可能带来惊喜。接下来,我们就来看看 bug 都能带来哪些意想不到的影响呢? 1.来自 Amazon 的圣诞大礼包~ 201...

计算机专业的书普遍都这么贵,你们都是怎么获取资源的?

介绍几个可以下载编程电子书籍的网站。 1.Github Github上编程书资源很多,你可以根据类型和语言去搜索。推荐几个热门的: free-programming-books-zh_CN:58K 星的GitHub,编程语言、WEB、函数、大数据、操作系统、在线课程、数据库相关书籍应有尽有,共有几百本。 Go语言高级编程:涵盖CGO,Go汇编语言,RPC实现,Protobuf插件实现,Web框架实...

12款好用的Visual Studio插件,最后一款良心推荐

最后一款插件真的很实用》》》

卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!

作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...

那些进大厂的程序员,「简历」都是怎么写的?我决定分享出来

简历投出去都石沉大海,你确定你简历这些要素都写对了?

计算机网络的核心概念

这是《计算机网络》系列文章的第二篇文章 我们第一篇文章讲述了计算机网络的基本概念,互联网的基本名词,什么是协议以及几种接入网以及网络传输的物理媒体,那么本篇文章我们来探讨一下网络核心、交换网络、时延、丢包、吞吐量以及计算机网络的协议层次和网络攻击。 网络核心 网络的核心是由因特网端系统和链路构成的网状网络,下面这幅图正确的表达了这一点 那么在不同的 ISP 和本地以及家庭网络是如何交换信息的呢?...

复习一周,京东+百度一面,不小心都拿了Offer

京东和百度一面都问了啥,面试官百般刁难,可惜我全会。

20道你必须要背会的微服务面试题,面试一定会被问到

写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...

2019年,CSDN上最受欢迎的10篇文章

很多读者问我:“二哥,你怎么不整理一篇 2019 年的文章列表呢?”说实话,我有些惭愧,因为有些文章写得很烂,我自己都不好意思再重读,真的辛苦了那些老读者,不离不弃的精神打动了我(????)。 当然也有一些文章广受好评,毕竟 2019 年我写了差不多 100 篇原创文章,这里就姑且把阅读量前 10 的文章挑选出来分享给大家吧。 NO.1 文章标题:Java面试官:兄弟,你确定 double 精度比 fl...

毕业5年,我问遍了身边的大佬,总结了他们的学习方法

我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。

推荐10个堪称神器的学习网站

每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...

这些软件太强了,Windows必装!尤其程序员!

Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...

为什么TCP建立连接协议是三次握手,而关闭连接却是四次挥手呢?

看到了一道面试题:“为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?为什么不能用两次握手进行连接?”,想想最近也到金三银四了,所以就查阅了相关资料,整理出来了这篇文章,希望对你们有所帮助。 TCP 连接 我们先来补一下基础什么是 TCP 协议?传输控制协议( Transmission Control Protocol, TCP )是种面向连接、确保数据在端到端间可靠传输的协议。面向连...

大学四年因为知道了这32个网站,我成了别人眼中的大神!

依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...

互联网人每天要面对多少变态需求?

互联网人个个都是三头六臂每天可能会面对各种不合理甚至变态的需求承受常人无法想象的压力-我们在社群里征集了各种变态需求,汇编成了合集--以上情况可能存在部分夸张但世界的多样性、人类的复杂性...

你修改了样式,却要我手动清除游览器缓存,这是BUG!

1. 事件背景 公司网站首页的样式进行了大量改版,但是上测试线后,测试同事对我们开发说:怎么还是原来的效果,没有任何变化啊。听到这样的问题,我们第一反应是游览器缓存。你清除一下游览器缓存,或者换一个游览器。 手动清除游览器缓存虽然可以解决问题,但是用户根本不知道啥是缓存,也不会手动清楚游览器缓存。我不管!这个是BUG,不解决这个BUG 不能上线。 嗯… 你说的有道理,我马上去修改! 2. 解决方案...

良心推荐,我珍藏的一些Chrome插件

上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...

【程序人生】程序员接私活常用平台汇总

00. 目录 文章目录00. 目录01. 前言02. 程序员客栈03. 码市04. 猪八戒网05. 开源众包06. 智城外包网07. 实现网08. 猿急送09. 人人开发10. 开发邦11. 电鸭社区12. 快码13. 英选14. Upwork15. Freelancer16. Dribbble17. Remoteok18. Toptal19. AngelList20. Topcoder21. ...

看完这篇HTTP,跟面试官扯皮就没问题了

我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...

史上最全的IDEA快捷键总结

现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。

Idea 中最常用的10款插件(提高开发效率),一定要学会使用!

学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。

2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议

点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...

推荐一些有趣的在线编程游戏

1.Robocode 让坦克们互相博弈的游戏,你可以看到它们飞奔,碾碎一切挡道的东西。机器人配有雷达与火炮,选手在躲避对手进攻的同时攻击对手,以此来较量得分的多少。这个游戏很有意思,曾经令我沉迷… 你可以用Java、Scala、C#等编程语言,编写人工智能程序,驱动机器人。 2.Code Combat Code Combat是一款学习编程的角色扮演游戏。每一关都用任务的形式设立目标,用实时的反馈...

“亚麻加班,谷歌养老”, 同样是码农差距也太大了!

有钱、“科技大佬”似乎是外界对大厂码农这份职业的第一印象。但若是在相亲市场转一圈,你可能会听到这样一个声音:你是码农啊?加班很多吧。 在大家的心中,“加班多”也渐渐成为了码农的一种身份属性。 可能晚上十点你经过FB楼下,还会看到大楼灯火通明; 也有可能你下午六点经过G家,却看到工位上的人已所剩无几; 说不定当你周末在公园散步,会发现有的人上一秒还在和...

GitHub 上有哪些适合新手跟进的优质项目?

专栏 | 九章算法 网址 | www.jiuzhang.com/?utm_source=sc-csdn-fks HelloGitHub star:19k Python,Java,PHP,C++,go,swift等各种编程语言的项目都有,每月28号更新发布(持续更新中)。这些开源项目大多都是非常容易上手,适合新手。 接下来按分享几个Python和Java相关,有趣又优质的项目。 Python: ...

一文带你看清 HTTP 所有概念

上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性。我们接着上篇文章没有说完的 HTTP 标头继续来介绍(此篇文章会介绍所有标头的概念,但没有深入底层) HTTP 标头 先来回顾一下 HTTP1.1 标头都有哪几种 HTTP 1.1 的标头主要分为四种,通用标头、实体标头、请求标头、响应标头,现在我们来对这几种标头进行介绍 通用...

一个程序在计算机中是如何运行的?超级干货!!!

强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...

作为一个程序员,CPU的这些硬核知识你必须会!

CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...

强烈推荐10本程序员必读的书

很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...

面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他

初识 MyBatis MyBatis 是第一个支持自定义 SQL、存储过程和高级映射的类持久框架。MyBatis 消除了大部分 JDBC 的样板代码、手动设置参数以及检索结果。MyBatis 能够支持简单的 XML 和注解配置规则。使 Map 接口和 POJO 类映射到数据库字段和记录。 MyBatis 的特点 那么 MyBatis 具有什么特点呢?或许我们可以从如下几个方面来描述 MyBati...

Python:爬取疫情每日数据

前言 目前每天各大平台,如腾讯、今日头条都会更新疫情每日数据,他们的数据源都是一样的,主要都是通过各地的卫健委官网通报。 以全国、湖北和上海为例,分别为以下三个网站: 国家卫健委官网:http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml 湖北卫健委官网:http://wjw.hubei.gov.cn/bmdt/ztzl/fkxxgzbdgrfyyq/xxfb...

为什么说程序员做外包没前途?

之前做过不到3个月的外包,2020的第一天就被释放了,2019年还剩1天,我从外包公司离职了。我就谈谈我个人的看法吧。首先我们定义一下什么是有前途 稳定的工作环境 不错的收入 能够在项目中不断提升自己的技能(ps:非技术上的认知也算) 找下家的时候能找到一份工资更高的工作 如果你目前还年轻,但高不成低不就,只有外包offer,那请往下看。 外包公司你应该...

B 站上有哪些很好的学习资源?

哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...

拼多多面试问了数据库基础知识,今天分享出来

一个SQL在数据库是怎么执行的,你是否了解过了呢?

相关热词 c# 局部 截图 页面 c#实现简单的文件管理器 c# where c# 取文件夹路径 c# 对比 当天 c# fir 滤波器 c# 和站 队列 c# txt 去空格 c#移除其他类事件 c# 自动截屏
立即提问