C++基础
文章平均质量分 60
虚坏叔叔
「虚幻私塾」
展开
-
C++ ifstream open 读取txt/json文件出现中文乱码的解决问题
C++ ifstream open 读取txt/json文件出现中文乱码的解决方法作者:虚坏叔叔博客:https://xuhss.com早餐店不会开到晚上,想吃的人早就来了!😄在编程中,我们经常需要对txt/json文件进行读写操作,有时候由于编解码问题,txt读写会出现乱码问题。下面介绍一种基于ofstream和ifstream的txt文件读写方法,并介绍txt文件读写的乱码解决方案。一、txt文件写入#include <fstream>#include <iostre原创 2022-05-09 18:56:58 · 9780 阅读 · 6 评论 -
C++ Json解析库CJsonObject的详细使用(跨平台无须编译成库)
作者:虚坏叔叔博客:https://xuhss.com早餐店不会开到晚上,想吃的人早就来了!😄C++ Json解析库CJsonObject的详细使用(跨平台无须编译成库)CJsonObject是基于cJSON全新开发一个C++版的JSON库,CJsonObject的最大优势是轻量(只有4个文件,拷贝到自己代码里即可,无须编译成库,且跨平台和编译器)、简单好用,开发效率极高,对多层嵌套json的读取和生成使用非常简单(大部分json解析库如果要访问多层嵌套json的最里层非常麻烦)。我一直使用原创 2022-05-09 16:45:00 · 3816 阅读 · 2 评论 -
Python和C++相似概念对比
1.self相当于c++当中的this2.类 class和C++一样3.def 定义函数()self可以默认做第一个参数,C++中的this不可以C++函数直接写在类里面 需要定义返回值的类型4.__ init__函数和C++中的构造函数类似5.for循环pythonfor index in array:c++for(int i = 0; i < (int)array.size(); i++)6.数据结构元组 () 相当于C++ 数组 vector列表 [原创 2020-12-06 23:13:42 · 1367 阅读 · 1 评论 -
libxl 的使用,读取时间格式
CString strValue; bool bDate = sheet->isDate(row, col); if (bDate) { double db = sheet->readNum(row, col); ...原创 2020-04-08 14:37:27 · 1001 阅读 · 0 评论 -
linux日志文件目录
/var/log原创 2020-01-05 11:06:46 · 381 阅读 · 0 评论 -
svn如何开启分支
1.选择要拷贝的svn路径2.确定目标svn路径3.选择copy to签出一个新的分支4.新建一个jenkins项目5.修改如下路径6.在服务器上从其他版本拷贝这个文件夹到新创建的打包项目的目录中...原创 2019-11-25 09:36:30 · 1133 阅读 · 1 评论 -
const 总结
const是外部的,声明为extend若不是外部的,则必须初始化,且不同文件里都要声明为extern原创 2013-03-10 16:48:14 · 805 阅读 · 0 评论 -
string 的初始化
#include string str1; //str为空串,无论在函数外或函数内都一样string str2("VALUE"); //将srt2初始化为一个字符串字面值副本string str3(str2);原创 2013-03-10 17:29:31 · 965 阅读 · 0 评论 -
读入未知数目的string对象
string str;while( cin>>str ){cout }return 0;输入: sssss aaaaa输出: sssss aaaaa原创 2013-03-10 17:41:46 · 1486 阅读 · 0 评论 -
getline() 函数的使用
getline( , ) 接受两个参数,一个输入流对象和一个string对象范例:int main(){string str;while ( getline(cin,str) ){cout }return 0;}输入:aaaaa sssss输出:aaaaa sssss原创 2013-03-10 17:54:14 · 1036 阅读 · 0 评论 -
string对象的输出和赋值
输出:string str("dsdfasfdfad");for (string::size_type st = 0; st != str.size(); st++){cout }赋值:int main(){string str("dfagrdag");for (string::size_type st = 0; st != str.size()原创 2013-03-10 19:54:12 · 1294 阅读 · 0 评论 -
关于C++声明和初始化的问题
int a; //定义extern int a; //声明extern int a = 3; //定义extern const int a = 3; //定义原创 2013-03-10 16:44:12 · 893 阅读 · 0 评论 -
str.size() 的返回值类型
string str;str.size() 的返回值类型是size_type为什么不是int ?因为int表示的范围太小,虽然我们不知道size_type的确切类型,但可以知道它是unsigned类型,它的长度是int所能存储的两倍原创 2013-03-10 18:14:21 · 3812 阅读 · 0 评论 -
string 字符串的连接
string s1 = "aaa";string s2 = "bbb";string s3 = s1 + ',' ; //正确,把一个string对象和一个字符串字面值连接起来string s4 = "aaa" + ',' ; //错误,不能将两个字符串字面值相加string原创 2013-03-10 18:35:31 · 1380 阅读 · 0 评论 -
vector 对象的初始化和操作
vector对象的定义和初始化vector类定义了好几种构造函数(2.3.3节),用来定义和初始化vector对象。表3-4列出了这些构造函数:表3-4 几种初始化vector对象的方式vector v1;vector保存类型为T的对象。默认构造函数v1为空。vector v2(v1);v2是v1的一个副本。vector v3(n原创 2013-03-10 21:29:06 · 1336 阅读 · 0 评论 -
C++实现大写字母向小写字母的转化
#include#includestring str("STEVEN");for (string::size_type st = 0; st != str.size(); st++){str[st] = tolower(str[st]); //把大写转化为小写cout }原创 2013-03-10 20:26:27 · 4870 阅读 · 0 评论 -
从string对象中去掉标点符号
#include "test.h"#include #include int main(){string str;cin >>str;string str1;for (string::size_type st = 0; st != str.size(); st++){if (!ispunct(str[st]))原创 2013-03-10 21:05:32 · 2353 阅读 · 0 评论 -
vector 的下标不增加元素
//错误写法vector ivec;for (vector::size_type ix = 0; ix != 10; ix++){ivec[ix] = ix;cout }//正确写法vector ivec;for (vector::size_type ix = 0; ix != 10; ix++){ivec.push_原创 2013-03-10 21:42:51 · 1141 阅读 · 0 评论 -
const_vector与const 的vector对象的区别
使用const_vector的类型时,我们可以得到一个迭代器,它自身的值可以改变,但不能改变其所指向元素的值,可以对迭代器进行自增以及解引用操作符来取值,但不能对该元素赋值。范例:vector ivec(5, "hi");for (vector::const_iterator iter = ivec.begin(); iter != ivec.end(); iter++){原创 2013-03-11 19:20:54 · 3448 阅读 · 0 评论 -
直接定位vector中间元素的方法
vector ivec;for (vector::size_type st = 0; st {ivec.push_back(st);cout }vector::iterator iter = ivec.begin() +ivec.end()/2; //直接定位vector中间元素cout << *iter;原创 2013-03-11 20:06:14 · 2194 阅读 · 0 评论 -
bitset的初始化和操作
bitset的定义和初始化bitset b; b有n位,每位都为0bitset b(u); b是unsigned long型u的一个副本bitset b(s); b是string对象s中含有的位串的副本bitset b(s, pos, n); b是s中从位置pos开始的n个位的副本bitset的操作b.any()原创 2013-03-11 20:41:54 · 3437 阅读 · 0 评论 -
编写程序,使用指针把一个int型数组的所有元素设置为0
int main(){const size_t a = 5;int int_a[a] = { 0, 1, 2, 3, 4};for (int *pBegin = int_a; pBegin != int_a+a; pBegin++) //数组的遍历{*pBegin = 1;cout }return 0;}原创 2013-03-12 12:28:52 · 2501 阅读 · 0 评论 -
编写程序创建10个元素的vector对象,用迭代器把每个元素改为当前的两倍
vector ivec;for (vector::size_type st = 0; st {ivec.push_back(st); //创建10个元素的vector对象cout }for (vector::iterator iter = ivec.begin(); iter != ivec.end(); iter++){*iter原创 2013-03-11 19:51:44 · 1553 阅读 · 0 评论 -
关于指针应注意的几个小问题
1.指针的声明:string* str1, str2; //str1是指向string对象的指针, str2是string类型的变量string *str1, *str2; //str1是指向string对象的指针,str2是指向string对象的指针2.建议程序员在使用之前初始化所有指针,初始化指针应注意:int zero =原创 2013-03-12 11:05:30 · 1164 阅读 · 0 评论 -
size_t,size_type,ptrdiff_t的区别
转自 : http://blog.csdn.net/zhaowei123191/article/details/5617559(1) size_t unsigned intsize_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::size_t(2) ptrdiff_t signed intptrdiff_t转载 2013-03-12 11:37:41 · 1389 阅读 · 4 评论 -
关于const指针和指向const对象的指针的初始化问题
int main(){int i = -1; //正确const int ic = i; //正确,常量并初始化const int *pic = ⁣ //正确,pic是指向const对象的指针,ic是const对象int原创 2013-03-12 14:06:33 · 1878 阅读 · 0 评论 -
strcpy和strncpy的区别
strcpy:字串复制 原型:char *strcpy(char *dest, char *src);strncpy:字串复制 原型:char * strncpy(char *dest, char *src, size_t n);区别范例:char ch[7] = "steven";char ch1[5];strcpy(ch1, ch);原创 2013-03-14 10:41:40 · 1105 阅读 · 0 评论 -
编写程序从标准输入设备读入的元素数据建立一个int型vector对象,然后动态创建与该vector大小一致的数组,把vector对象的所有元素复制给该数组
int main(){string str;cin >> str; //获取输入vector svec(str.length());for (unsigned int i = 0; i {svec[i] = str[i];}string *pstr = new string[str.len原创 2013-03-14 12:06:22 · 1991 阅读 · 0 评论 -
debug和release的区别
Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不转载 2013-03-28 16:00:23 · 815 阅读 · 0 评论 -
重写bitset表达式,使用下标操作符对测验结果进行置位(置1)和复位(置0)
bitset bs;for (int i = 0; i != bs.size(); i++){bs.set(i); //置位为1bs.reset(i); //复位为0cout }原创 2013-03-18 11:46:52 · 1255 阅读 · 0 评论 -
什么时候应该将形参定义为引用类型。什么时候不应该将形参定义为引用。
如下情况将形参定义为引用1.通过形参调用修改函数的值,如swap函数2.通过一次调用获得多个结果值3.传递大型对象时,避免复制形参如下情况不应该将形参定义为引用1.不需要通过函数调用修改实参的值,如求绝对值的函数原创 2013-04-01 09:35:15 · 2884 阅读 · 0 评论 -
何时应将引用形参定义为 const 对象?如果在需要 const 引用时,将形参定 义为普通引用,则会出现什么问题?
1.当唯一目的是避免复制实参,则将引用形参定义为const对象2.如果在需要 const 引用时,将形参定 义为普通引用,则会导致const对象和需要类型转换的对象不能调用该函数,会增加函数的局限性原创 2013-04-01 09:47:17 · 1679 阅读 · 0 评论 -
编写程序处理vector<int>对象的元素:将每个奇数值元素用该值的两倍替换。
int main(){vector ivec;ivec.push_back(1); //赋值ivec.push_back(2);ivec.push_back(3);ivec.push_back(4);ivec.push_back(5);ivec.push_back(6);for (vector::iterator it =原创 2013-03-18 16:52:30 · 1188 阅读 · 0 评论 -
编写程序定义一个vector 对象,其每个元素都是指向string 类型的指针,读 取该vector 对象,输出每个string 的内容及其相应的长度。
int main(){vector svec;cout string str;cin >> str ; //接收字符串string *pstr = new string; //动态分配内存pstr = &str;svec.push_back(pstr);原创 2013-03-18 16:13:39 · 1979 阅读 · 0 评论 -
技术人员创业的101军规
近来我的Email邮箱里塞满了想请我喝咖啡的企业家的邮件,他们总想我“顺便”给他们的创意和创业提些建议。尽管到NetLine任新职以来非常繁忙,我还是晚上或者周末挤出时间来给他们提供力所能及的建议。我屡次观察到这样的现象:开发者们正在为“他们自己”开发一个产品。我真希望他们很早就把我放进了他们的口袋里,以便更早发现这一重大隐患:他们居然在没有市场计划的情况下摸黑前进。一次又一次地,转载 2013-03-31 16:49:58 · 1496 阅读 · 0 评论 -
什么时候应使用指针形参?什么时候就使用引用形参?解释两者的优点和缺点。
1.当函数需要处理数组且函数体不依赖于数组的长度时应使用指针形参,其他情况下应使用引用形参:2.指针形参的优点:可以明确地表示函数所操纵的是指向数据元素的指针,而不是数组本身,而且可以使用任意长度的实参数组来调用函数; 缺点:函数体不能依赖于数组的长度,否则容易造成数据内存的越界访问,从而产生错误的结果或者程序崩溃。 引用形参的优点:在函数体中依赖数组原创 2013-04-01 09:55:48 · 3289 阅读 · 0 评论 -
编写程序计算数组元素之和。要求编写函数三次,每次以不同的方法处理数组边界。
1.使用标准库规范int sum_array( const int *beg, int *en ){ int sum = 0; while ( beg != en ) { sum += *beg++; } return sum;}int main(){ int a[] = { 1,1,2,3,4,5,6,7,8,9 }; cout << sum_array( a原创 2013-04-01 10:50:13 · 2000 阅读 · 0 评论 -
编写一个主函数 main,使用两个值作为实参,并输出它们的和。
int main( int argc, char **argv ) //argc用于传递argv中字符串的个数, argv是一个C风格字符串数组{ if( argc != 3 )//检查命令行参数 { return -1; } cout << argv[1] << "+" << argv[2] << "=" << ( ( atof(argv[1]) ) + ( atof(argv[2原创 2013-04-01 11:23:15 · 2237 阅读 · 2 评论 -
解释形参、局部变量和静态局部变量的差别
(1) 形参的作用域为整个函数体,而普通(非静态)局部变量和静态局部变量的作用域为:从定义处到包含该变量定义的块的结束处。(2) 形参由调用函数时所传递的实参初始化;而普通(非静态)局部变量和静态局部变量通常用初始化式进行初始化,且均在程序执行流程第一次经过该对象的定义语句时进行初始化。静态局部变量的初始化在整个程序执行过程中进行一次。(3)原创 2013-04-02 20:11:22 · 3837 阅读 · 0 评论 -
关于CStringArray的运用方法
1.CStringArray类CStringArray类可以用来存储CString类型的对象,而且它的容量是可以动态增加的。CStringArrayCObject└CStringArrayCStringArray类支持CString对象数组。CStringArray的成员函数类似于CObArray类的成员函数。由于具有这些原创 2013-04-03 16:14:44 · 7922 阅读 · 0 评论