综合
在利用面向过程思想写程序的时候,常常遇到如果把一个函数A定义在函数B之后,就无法在B中调用A,我们可以在代码的开头部分加上函数的定义,即 void average()这种,告诉编译器后面有一个叫average的函数,这个就叫函数原型定义
C++
车型检测与车牌识别
调用百度的sdk https://ai.baidu.com/ai-doc/VEHICLE/pk3hb3gww
如您以前是百度云的老用户,其中API_KEY对应百度云的“Access Key ID”,SECRET_KEY对应百度云的“Access Key Secret”。
对这句话的理解
先登录百度云
创建应用
错误
解决
https://blog.csdn.net/pony_maggie/article/details/8588888
token无效,兄弟们
解决‘error_code‘: 110, ‘error_msg‘: ‘Access token invalid or no longer valid(百度智能云使用方法)
https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=UuCSoaD92MguDWDrep3rUwfP&client_secret=cbWvZCZO70nYobu8CWFZvVDa7jBPKozu
{“log_id”:1392381833479454720,“error_msg”:“image transcode error”,“error_code”:282100}
我们看官方提供的,这个base64是不是有点东西?
现在转Base64编码
音乐播放器项目
mciSendString 和 mciSendCommand 函数的简单使用
C++读取txt文件有些符号乱码
把txt改成ANSI格式
C++输出个别字符乱码
就是这个字符有问题你,一看,居然是个整型,强转成char也不行,直接弄成string
string s = "¥";
outFeedback +=s;//contain in guess but not in corect position
C++中string转double和int
https://blog.csdn.net/qq_32273417/article/details/88318161
string s;
cin >> s;
double n = atof(s.c_str());
string s;
cin >> s;
cout << atoi(s.c_str()) << endl;
遍历被const修饰的list
被const修饰了的list是无法使用popback()的,也没办法用普通的迭代器遍历,需要用到const_iterator
void Show(const std::list<Student> & li)
{
typedef std::list< Student >list_t;
//list_t::iterator iter;
list_t::const_iterator iter;
//const string *str= &li.pop_front();
/*auto it = li.begin();
while (it != li.end()) {
it = li.erase(it);
}*/
//li.pop_back();
for ( iter = li.begin(); iter != li.end(); iter++)
{
std::cout << iter->no << ","<<iter->name << std::endl;
}
//for (list<Student>::iterator iter = li.begin(); iter != li.end(); ++iter)
// cout << *iter << endl;
}
map遍历,排序,根据key查找value
按照key排序
c++ map基础知识、按键排序、按值排序
int cmp(const pair<string, unsigned>& x, const pair<string, unsigned>& y)
{
return x.first < y.first;
}
void sortMapByValue(map<string, unsigned>& tMap, vector<pair<string, unsigned> >& tVector)
{
for (map<string, unsigned>::iterator curr = tMap.begin(); curr != tMap.end(); curr++)
tVector.push_back(make_pair(curr->first, curr->second));
sort(tVector.begin(), tVector.end(), cmp);
}
void alphabetSortedFrequency(map<string, unsigned> &msu)
{
vector<pair<string, unsigned>> tVector;
sortMapByValue(msu, tVector);
for (int i = 0; i < tVector.size(); i++)
cout << tVector[i].first << ":" << tVector[i].second << endl;
/*map< string, unsigned>::iterator iter;
for (iter = msu.begin(); iter != msu.end(); iter++) {
cout << iter->first << ":" << iter->second << endl;
}*/
}
map根据key查找value
map<string, unsigned> msu;
map< string, unsigned>::iterator iter;
iter = msu.find(arr[i]);
msu.insert(make_pair(arr[i], iter->second+1));
map遍历
/*map< string, unsigned>::iterator iter;
for (iter = msu.begin(); iter != msu.end(); iter++) {
cout << iter->first << ":" << iter->second << endl;
}*/
利用transform函数把单词的首字母如果是大写就变成小写
#include<algorithm>
transform(word.begin(), word.begin() + 1, word.begin(), ::tolower);//首字母大写的就变成小写
no matching function for call to 'transform(std::__cxx11::basic_string
https://blog.csdn.net/fadbgfnbxb/article/details/96769096
利用stringstream判断字符串是不是全是数字
#include <sstream>
string content="12 45 5 No matter no ";
istringstream ss(content);
string word;
while (ss >> word) {
stringstream sin(word);
double d;
char c;
if (!(sin >> d))
{
transform(word.begin(), word.begin() + 1, word.begin(), ::tolower);//首字母大写的就变成小写
arr.push_back(word);
}
if (sin >> c)
{
transform(word.begin(), word.begin() + 1, word.begin(), ::tolower);//首字母大写的就变成小写
arr.push_back(word);
}
}
C++读取CSV文件
double数据打印到控制台编程了整数,无法打印小数部分
我的double数据如下,
控制台显示是这样的
解决方法
#include <iomanip>
cout << fixed << setprecision(3) << point1.x << endl;
系统没给定有多少组输入的情况下,如何测试多组输入
这样就可以了
while (cin >> n)
控制台下输入字符串(含空格)
输入书名和作者时,因为会含有空格,请用cin.getline()函数,例如cin.getline(name,sizeof(name))
https://blog.csdn.net/Softwaregg/article/details/6927929
char s1[100];
cin.getline(s1, sizeof(s1));
char *name = (char*)malloc(strlen(s1) + 1);
strcpy(name, s1);
主函数中无法访问类的静态变量?
class Student
{
public:
static int count; //静态成员,表示学生人数
}
int Student::count = 0;//加在main前面
JAVA
java List的add方法报空指针异常
java 输出控制台对齐的问题
System.out.printf("%-15s%-15s%-15s%-15s%-15s%-15s%-15s\n",
locationList.get(i).iDNumber, locationList.get(i).type, locationList.get(i).location,
locationList.get(i).surfaceArea, String.valueOf( locationList.get(i).monthlyRent),
locationList.get(i).status, locationList.get(i).sellingPrice);
java 类实现Comparable接口进行比较
public class Film implements Comparable {
public static final String[]Ratings={"U","PG","12U","15U","18U"};
String title;
int duration;
String rating;
@Override
public int compareTo(Object o) {
Film obj1 = (Film)o;
// Film obj2 = (Film)o2;
if (obj1.duration >= this.duration) {
return -1;
} else {
return 1;
}
}
}
自定义异常类
class myException extends Exception {
public myException(String msg)
{
super(msg);
}
}
if(ds<0||ds>100)
{
throw new myException ("请输入[0,100]的数");
}
画UML类图
可以用draw.io画,这样可以使用它的类模板
注意规范
double保留6位小数
方法1:BigDecimal.ROUND_DOWN表示直接去掉尾数。
BigDecimal b = new BigDecimal(area( x1, y1, x2, y2, x3, y3));
double d = b.setScale(6, BigDecimal.ROUND_DOWN).doubleValue();
System.out.println(d);
方法2
double d = 114.145;
DecimalFormat df = new DecimalFormat("#.000000");
String str = df.format(d);
System.out.println(str);
java如果没有txt就创建txt
FileOutputStream fos=new FileOutputStream("test.txt",true);//true表明会追加内容,且如果没有
//txt会自动创建
java判断字符串是否为空
if(! (line==null))
if(!line.isEmpty())
在控制台运行java程序
首先在你的java文件目录下运行cmd
在cmd输入下面的指令,这是把java文件转成字节码文件
javac Sample.java
我的报错了,这是因为编码格式的问题
重新输入指令
javac -encoding UTF-8 Sample.java
就会生成class文件
然后运行class文件
java Sample
注意不是下面的指令,不需要加后缀
Java 小数点分割字符串 split(".")无效 需使用split("\.")来分割
首先抛出来2个问题:
问题1: 小数点不是转义字符, 为什么不能直接用split(.)?
问题2: 为什么非要加2个反斜杠, 只加1个不行吗?
下面给出解释
解答问题1: split里面的参数是正则表达式, 在正则表达式中, 小数点表示可以匹配任意字符, 所以不能直接用小数点.
解答问题2: 由于问题1已经解决, 很自然的想法就是加上反斜杠来进行转义, 而且这个转义语法其实只有正则表达式能够识别, Java语言中并不支持这种转义, 所以只加一个反斜杠是不行的, 再通俗点说就是, 我要告诉正则表达式2个字符, 一个是反斜杠, 一个是小数点, 反斜杠由于是特殊字符, 所以我要通过转义了告诉正则表达式, 而小数点不是特殊字符, 所以我可以直接告诉正则表达式, 最后的结果就是两个反斜杠+小数点.
————————————————
版权声明:本文为CSDN博主「Glenn甘露」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/braveloser/article/details/82499129
Map的get方法爆出空指针异常
这是因为map里面没有这个key的话用get就会空指针异常,需要先用containsKey判断是否存在,存在再用get去取出value.
Map.getOrDefault()方法
当Map集合中有这个key时,就使用这个key对应的value值,如果没有这个key就使用默认值defaultValue
下面的代码表示当map里面没有ch这个key的话就返回0(这个0就是我们自己设置的defaultValue),如果存在,就返回key对应的value,
map.put(ch, map.getOrDefault(ch, 0) + 1);
https://blog.csdn.net/lxj_1993/article/details/79798963
C语言
判断输入的数是不是整数
bool IsConvertableToInt(char a[100])
{
bool flag = true;
int count = 0;
int length = strlen(a);
if (length > 11)
{
flag = false;
}
else if (length == 0)
{
flag = false;
}
else
{
for (int j = 0; j < length; j++)
{
if (a[j] > 57 || a[j] < 48)
{
count++;
if (count > 0)
{
flag = false;
break;
}
}
}
}
return flag;
}
double转char[]
double d = 123456.1234567899;
char s[50];
sprintf(s,"%f", d);
printf("%s\n", s);
sprintf(s,"%.10f", d);
printf("%s\n", s);
sprintf(s,"%.2f", d);
printf("%s\n", s);
int 转char[]
char f[100];
snprintf(f, sizeof(f), "%d", i+1);
新建结构体变量提示未初始化
typedef struct teacher {
int id;//教师号
char name[20];//姓名
char sex[20];//性别
char companyName[100];//单位名称
char address[100];//家庭住址
char phone[20];//联系电话
struct data *teacherData;
//struct spend *teacherSpend;
double payable;//应发工资
double spen;//合计扣款
double paidWages;//实发工资
}T;
T *teacher1;
teacher1=(T *)malloc(100 * sizeof(T *));
结构体的int或者double在接受控制台输入的时候报错
出错前我是这样写的
scanf("%d", teacher1->id);
修改之后不报错(就是直接取地址)
scanf("%d", &teacher1->id);
C把double保留2位写入txt
fprintf(fp, "%d\t%0.2lf\n", data[i].id, data[i].basicWage);
注意,默认的%lf是保留6位小数
C语言中数组就算是值传递,对数组元素的操作也会改变原数组
C语言实现分屏显示
https://zhidao.baidu.com/question/23896299.html
可以在输出达到一定数量时,加入一个getch();或是system(“pause”);以实现暂停输出,按任一键后继续。
#include<stdio.h>
void main()
{
int a,b,c;
for(a=1 ;a<300;a++)
{
printf("A=%d\n",a);
if(a%20==0)system("pause");
}
system("pause");
}
MFC
获取编辑框的值
GetDlgItem(IDC_EDIT2)->GetWindowText(structname);
字符串写入txt当有中文的时候换行不成功
如下图,改成多字节字符集
MFC:ListCtrl不显示内容?
需要先insertItem
MFC设置按钮或者编辑框可按可编辑、不可按不可编辑
GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT3)->EnableWindow(TRUE);
MFC 退出程序方法
exit(0)当前进程就再见了
给对话框添加菜单栏
然后在OnInitDialog()函数中添加以下代码
CMenu m_Menu;
m_Menu.LoadMenu(IDR_MENU1);
SetMenu(&m_Menu);
【MFC】编辑框 CEdit Ctrl控件自动换行设置
MFC中Edit Control自动换行,即文字超出控件宽度自动换行。
属性设置:
Auto HScroll : False
Auto VScroll : True
Multiline : True
Want Return : True
IDEA
错误: 编码GBK的不可映射字符
我是在控制台使用命令
javadoc annoDemo.java
出的错误如下
解决方法是
javadoc -encoding UTF-8 annoDemo.java
Android
1:给界面添加一个按钮
直接拖动就好了
不知道怎么进去xml,可以参考下面的
2:给按钮绑定响应事件
在xml文件里面绑定一下函数名字
public void onclick1(View view) //这个方法是弹出一个对话框
{
AlertDialog.Builder builder=new AlertDialog.Builder(this);
// builder.setIcon(R.drawable.ic_launcher);//设置图标
builder.setTitle("若想成功必先自宫");//设置对话框的标题
builder.setMessage("你确定要自宫吗?");//设置对话框的内容
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { //这个是设置确定按钮
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this, "自宫成功", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { //取消按钮
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this, "取消自宫",Toast.LENGTH_SHORT).show();
}
});
AlertDialog b=builder.create();
b.show(); //必须show一下才能看到对话框,跟Toast一样的道理
}
private void initEvent() {
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showDialog();
}
});
}
3:Android语音播报
https://blog.csdn.net/qq_33330887/article/details/89846459
eclipse
生成构造函数 getter setter 快捷键
alt+shift+s
run as java Application报错
因为是applet程序,所以直接run as java Applet就可以了
eclipse设置控制台字体大小
如何使用Eclipse打开已有工程
Swing
点击按钮弹出新的窗口
class subWindow extends JFrame {
JTextArea text1 = new JTextArea();
public subWindow() {
}
}
btn[0].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
subWindow testinterfrm = new subWindow();// 新建子窗口对象
testinterfrm.setVisible(true);// 子窗口可见
for (int i = 0; i < result.size(); i++) {
testinterfrm.add(result.get(i));
}
}
});
给textArea添加滚动条
class subWindow extends JFrame {
JTextArea text1 = new JTextArea();
public subWindow() {
// setTitle("计算结果");//标题
// setBounds(400, 300, 241, 394);//父窗口的坐标和大小
// getContentPane().setLayout(null);//自由布局
//
// //text1.setBounds(0, 0, 241, 394);
// text1.setBounds(0, 0, 241,394);
// // 设置字体
// text1.setFont(new Font(null, Font.PLAIN, 20));
// // 设置大小
// //text.setPreferredSize(new Dimension(280,28));
// // 不可编辑
// text1.setEditable(false);
// getContentPane().add(text1);//按钮添加到窗口中
// setLocationRelativeTo(null);//显示在屏幕中央
setTitle("计算结果");// 标题
this.setLayout(null);
// 实例化文本框
// JTextArea text1= new JTextArea();
// 在文本框上添加滚动条
JScrollPane jsp = new JScrollPane(text1);
// 设置矩形大小.参数依次为(矩形左上角横坐标x,矩形左上角纵坐标y,矩形长度,矩形宽度)
// jsp.setBounds(13, 10, 350, 340);
jsp.setBounds(13, 10, 200, 340);
// 默认的设置是超过文本框才会显示滚动条,以下设置让滚动条一直显示
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
// 把滚动条添加到容器里面
this.add(jsp);
this.setSize(240, 400);
this.setVisible(true);
// this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
text1.setEditable(false);
text1.setFont(new Font(null, Font.PLAIN, 20));
setLocationRelativeTo(null);// 显示在屏幕中央
}
}
一些小技巧
qq的截图快捷键按下,某些软件本来的宽口就不见了
据我观察,大都是因为按下了Alt键,会出现这种情况,解决方法是修改qq的截图快捷键,去掉alt键,或者换一种截图工具