`
sealbird
  • 浏览: 586592 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

string, char*, int类型转换 , c++强制转化

    博客分类:
  • C++
阅读更多

一、

以下是常用的几种类型互相之间的转换
string 转 int
..............................
char* 转 int 
#include <stdlib.h> 

int atoi(const char *nptr); 
long atol(const char *nptr); 
long long atoll(const char *nptr); 
long long atoq(const char *nptr); 
...................................................................
int 转 string 
可以使用stringstream类(需要包含<sstream>头文件)
int main()
{
   stringstream ss;
   int i = 100;
   string str;
   ss >> i;
   ss << str; //这时str中就是字符串"100".
   retturn 0;
}

.............................
char* 转 string  
string s(char *);  
你的只能初始化,在不是初始化的地方最好还是用assign().
..................................................................
int 转 char *
在stdlib.h中有个函数itoa() 
itoa的用法: 
itoa(i,num,10); 
i 需要转换成字符的数字 
num 转换后保存字符的变量 
10 转换数字的基数(进制)10就是说按照10进制转换数字。
还可以是2,8,16等等你喜欢的进制类型 
原形:char *itoa(int value, char* string, int radix); 

实例: 
#include "stdlib.h" 
#include "stdio.h" 
main() 
{ 
    int i=1234; 
    char s[5]; 
    itoa(i,s,10); 
    printf("%s",s); 
    getchar(); 
}
..........................................
string 转 char *  
char *p = string.c_str();  

string aa("aaa"); 
char *c=aa.c_str(); 
string mngName; 
char t[200]; 
memset(t,0,200); 
strcpy(t,mngName.c_str());
.......................................... 


posted on 2008-04-17 15:22 林公子 阅读(8479) 评论(3)  编辑 收藏 引用 所属分类: C++/CLI 
 


评论
# re: [转]string, char*, int类型转换 2009-01-29 16:51 ChriHan 
string str; 
ss >> i; 
ss << str; //这时str中就是字符串"100". 

这个部分好像不对, 
应该是 
ss << i; 这时str中就是字符串"100". 
可以通过ss.str()提取ss中的内容  回复  更多评论 
   


# re: [转]string, char*, int类型转换 2009-02-02 13:57 erosnick 
@ChriHan 
谢谢Chrihan的更正,以后得注意点, 避免bug:)  回复  更多评论 
   


# re: [转]string, char*, int类型转换 2009-07-06 13:17 Robert.Hu 
在"string 转 char * "中

"char *c=aa.c_str();"
错了吧,c_str()返回的是const char* 而 const char* 不能转换成char*  回复  更多评论 
   



二、
c++ int转换成string类型 代码



//第一种方法

 #include <iostream>
#include <string>
using namespace std;

int main()
{
    int n = 65535;
    char t[256];
    string s;

    sprintf(t, "%d", n);
    s = t;
    cout << s << endl;

    return 0;
}




    //第二种方法

#include <iostream>
#include <string>
#include <strstream>
using namespace std;

int main()
{
    int n = 65535;
    strstream ss;
    string s;
    ss << n;
    ss >> s;
    cout << s << endl;

    return 0;
}



三、

引用

最近做项目用到c++,才发现c++中的数据类型不是一般的BT。尤其是我和婷还是分开操作的。我写底层,用的是WIN32控制台;而婷写MFC。由于没有经验,所以没有写中间的转换程序。当集成时,类型转换特别麻烦。以下都是我收集的类型转换的方法和一些经验,供大家参考。欢迎补充~~

1. char* to string
string s(char *); 
注:在不是初始化的地方最好用assign().
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2. string to const char*
string a="strte";
const char* r=a.c_str();
注意是const的。还要转到char*:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.2. const char* to char*
const char* r="123";
char   *p1   =   new   char[strlen(r)+1];
strcpy(p1,r);
附:http://hi.baidu.com/cfans/blog/item/06970ef4b671f366dcc4745d.html
这个页面是具体讲述区别的。
·············································································································
3. cstring to string
vs2005 Unicode下:
  CStringW   str(L"test");  
  CStringA   stra(str.GetBuffer(0));  
  str.ReleaseBuffer();      
  std::string   strs   (stra.GetBuffer(0));  
  stra.ReleaseBuffer();

非Unicode下:
CString cs("test");
std::string str=cs.getBuffer(0);
cs.ReleaseBuffer();

注:GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
++++++++++++++++++++++++++++++++++++++++++++++++++++
4. double ,int to string
#include <sstream>
using namespace std;

stringstream ss;
string result;
long n=11111;
stream << n; //从long型数据输入
stream >>result; //转换为 string


===================================================

5.char*  to int, double ,long

char *s; double x; int i; long l;

s = " -2309.12E-15"; /* Test of atof */
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

s = "7.8912654773d210"; /* Test of atof */
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

s = " -9885 pigs"; /* Test of atoi */
i = atoi( s );
printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, i );

s = "98854 dollars"; /* Test of atol */
l = atol( s );
printf( "atol test: ASCII string: %s\t\tlong: %ld\n", s, l );
------------------------------------------------------------------------------------------------
6. string to int ,long ,double            
              int s;
string str="123";
stringstream ss;
ss<<str;//从str输入
ss>>s;//输出到int
ss.clear();


——————————————————————————————————————————
7. date to string
#include <time>
using namespace std;

char dateStr [9];
char timeStr [9];
_strdate( dateStr);
printf( "The current date is %s \n", dateStr);
_strtime( timeStr );
printf( "The current time is %s \n", timeStr);

--------实践证明是正确的版本--------------------------------------------------------------
#include <iostream>
#include <ctime>
#include <cerrno>

int main()
{
     //Find the current time
     time_t curtime = time(0);
     
      //convert it to tm
      tm now=*localtime(&curtime);
    
     //BUFSIZ is standard macro that expands to a integer constant expression
     //that is greater then or equal to 256. It is the size of the stream buffer
     //used by setbuf()
     char dest[BUFSIZ]={0};
    
     //Format string determines the conversion specification's behaviour
     const char format[]="%A, %B %d %Y. The time is %X";
    
     //strftime - converts date and time to a string
     if (strftime(dest, sizeof(dest)-1, format, &now)>0)
       std::cout<<dest<<std::endl;
     else
       std::cerr<<"strftime failed. Errno code: "<<errno<<std::endl;
}

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8.string to cstring

+++++++++++++++++++++++++++++++++++++++++++++++++++++
非Unicode下:
int 转 CString:
CString.Format("%d",int);
...............................
string 转 CString 
CString.format("%s", string.c_str()); 
用c_str()确实比data()要好. 
.......................................
char* 转 CString 
CString.format("%s", char*); 
CString strtest; 
char * charpoint; 
charpoint="give string a value"; 
strtest=charpoint; //直接付值
.....................................................
CString 转 int
CString  ss="1212.12"; 
int temp=atoi(ss); //atoi _atoi64或atol
...................................................................................................................................
9.在Unicode下的CString to double
CSting sTemp("123.567");
double dTemp = _wtof(sTemp.GetString());

文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/c++/cppjs/20090412/164832.html



4、
收藏
强制转化四种类型可能很多人都常常忽略就象我一样,但是有时还是比较有用的。不了解的建议看看,一些机制我也不是十分了解,只是将一些用法写出来让大家看看。
                                                            2004-11-27 9:00

强制转化无论从语法还是语意上看,都是c++中最难看的特征之一。但是基于c风格的转化的语义的不明确性及其一些潜在问题。强制类型转化最终还是被c++接受了。
1.static_cast运算符号
static_cast<T>(e),stroustrup让我们可以把它看成隐含转换的显示的逆运算。这个是有一定道理的,基于隐式转化的对象类型我们可以使用static_cast转化运算符号。它是静态的检测,无法运行时检测类型,在继承中尤为突出。
使用范围
<1>用于所有系统类型之间转化,不能用于系统类型指针类型转化

  double t_d = 0;
int t_i= static_cast<int>(t_d); //是合法的转化

而企图将double*->int*是不允许的
<2>用于继承类之间的转化(含指针),不能用于其他没有隐式转化的对象类型之间的转化
继承举例:

class x
{
};
class y: public x
{
};
使用:x t_o_x;
y t_o_y = static_cast<y>(t_o_x); //x* y*转化也可以进行因为x,y继承关
//系,类型可以自动隐式转化使用
   隐式转化举例:
class x
{
};
class y
{

public:
    y( x i_x ) {}
};
    x t_o_x;
     y t_o_y = static_cast<y>(t_o_x);

//大家看到y构造函数可以对于x类型隐式转化
//所以可以将x->y,如果企图将y->x会报错
2.reinterpret_cast 运算
主要用于对于类型指针类型的强制转化,some_type* -> special_type*这样转化,类型信息可以是不完全的。它允许将任意指针转化到其他类型指针,也允许任意整数类型到任意指针类型转化(BT)。这样导致的结果是极其不安全的,不能安全的应用于其他目的,除非转化到原来类型。
<1> 使用所有整形可以转化为任意类型的指针(指针是4字节的long的东东,那么机器就认为同类型就是可以转化)

int c;
x* p = reinterpret_cast<x*>(c); 

//x是自定义的任意类型,当然包括系统类型
<2> 可以对于任意类型指针之间转化

y* c;
x* p = reinterpret_cast<x*>(c);//

x,y代表所有自定义或系统类型
大家可以看到reinterpret_cast的转化是极度的不负责任的,他只管转化不检测是否可以转化。
<3> const_cast运算符号
这个很简单从名字大家可以看出来,仅仅为了去掉或着加上const修饰符号。但是对于本身定义时为const的类型,即使你去掉const性,在你操作这片内容时候也要小心,只能r不能w操作,否则还是会出错。

const char* p = "123";
char* c = const_cast<char*>(p);

c[0] = 1;  //表面上通过编译去掉了const性,但是操作其地址时系统依然不允许这
//么做。这是一个漏洞吧
<4> dynamic_cast运算符号
Scott Mayers将其描述为用来执行继承体系中:安全的向下转型或者跨系转型动作。也就是说你可以,用dynamic_cast将 指向base class的指针或引用转型为 指向子类的对象的指针或引用。

class B {};  //polymorphic类型含virtual才能dynamic_cast
class D: public B {}
void f( B* pb )
{
    D* pd1 = dynamic_cast<D*>(pb);//如果pb为d类型正确返回,如果不是返回0
    D* pd2 = static_cast<D*>(pb);

//不管怎么样都返回指针有可能指向不合适的对
//象,因为static仅仅静态检测,不能得到运
//行时对象的信息是否真正为D类型
}

反正大家在使用知道怎么用就ok了,c++强制转化在模板中还是非常有用的,其他时候本人也喜欢用c的转化方便


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/goodluckyxl/archive/2005/01/19/259851.aspx



5、static_cast<>揭密

static_cast<>揭密


作者:Sam NG 

译者:小刀人


原文链接:What static_cast<> is actually doing

本文讨论static_cast<> 和 reinterpret_cast<>。 

介绍
大多程序员在学C++前都学过C,并且习惯于C风格(类型)转换。当写C++(程序)时,有时候我们在使用static_cast<>和reinterpret_cast<>时可能会有点模糊。在本文中,我将说明static_cast<>实际上做了什么,并且指出一些将会导致错误的情况。

泛型(Generic Types)



        float f = 12.3;
        float* pf = &f;
      // static cast<>
        // 成功编译, n = 12
        int n = static_cast<int>(f);
        // 错误,指向的类型是无关的(译注:即指针变量pf是float类型,现在要被转换为int类型)
        //int* pn = static_cast<int*>(pf);
        //成功编译
        void* pv = static_cast<void*>(pf);
        //成功编译, 但是 *pn2是无意义的内存(rubbish)
        int* pn2 = static_cast<int*>(pv);
      // reinterpret_cast<>
        //错误,编译器知道你应该调用static_cast<>
        //int i = reinterpret_cast<int>(f);
        //成功编译, 但是 *pn 实际上是无意义的内存,和 *pn2一样
        int* pi = reinterpret_cast<int*>(pf);
简而言之,static_cast<> 将尝试转换,举例来说,如float-到-integer,而reinterpret_cast<>简单改变编译器的意图重新考虑那个对象作为另一类型。

指针类型(Pointer Types)

指针转换有点复杂,我们将在本文的剩余部分使用下面的类:
class CBaseX
      {
      public:
      int x;
      CBaseX() { x = 10; }
      void foo() { printf("CBaseX::foo() x=%d\n", x); }
      };
      class CBaseY
        {
        public:
        int y;
        int* py;
        CBaseY() { y = 20; py = &y; }
        void bar() { printf("CBaseY::bar() y=%d, *py=%d\n", y, *py); 
        }
        };
      class CDerived : public CBaseX, public CBaseY
        {
        public:
        int z;
        };
情况1:两个无关的类之间的转换 



      // Convert between CBaseX* and CBaseY*
      // CBaseX* 和 CBaseY*之间的转换
      CBaseX* pX = new CBaseX();
      // Error, types pointed to are unrelated
      // 错误, 类型指向是无关的
      // CBaseY* pY1 = static_cast<CBaseY*>(pX);
      // Compile OK, but pY2 is not CBaseX
      // 成功编译, 但是 pY2 不是CBaseX
      CBaseY* pY2 = reinterpret_cast<CBaseY*>(pX);
      // System crash!!
      // 系统崩溃!!
      // pY2->bar();
正如我们在泛型例子中所认识到的,如果你尝试转换一个对象到另一个无关的类static_cast<>将失败,而reinterpret_cast<>就总是成功“欺骗”编译器:那个对象就是那个无关类。

情况2:转换到相关的类
      1. CDerived* pD = new CDerived();
      2. printf("CDerived* pD = %x\n", (int)pD);
      3. 
      4. // static_cast<> CDerived* -> CBaseY* -> CDerived*
      //成功编译,隐式static_cast<>转换
      5. CBaseY* pY1 = pD;
      6. printf("CBaseY* pY1 = %x\n", (int)pY1);
      // 成功编译, 现在 pD1 = pD
      7. CDerived* pD1 = static_cast<CDerived*>(pY1);
      8. printf("CDerived* pD1 = %x\n", (int)pD1);
      9. 
      10. // reinterpret_cast
      // 成功编译, 但是 pY2 不是 CBaseY*
      11. CBaseY* pY2 = reinterpret_cast<CBaseY*>(pD);
      12. printf("CBaseY* pY2 = %x\n", (int)pY2);
      13. 
      14. // 无关的 static_cast<>
      15. CBaseY* pY3 = new CBaseY();
      16. printf("CBaseY* pY3 = %x\n", (int)pY3);
      // 成功编译,尽管 pY3 只是一个 "新 CBaseY()"
      17. CDerived* pD3 = static_cast<CDerived*>(pY3);
      18. printf("CDerived* pD3 = %x\n", (int)pD3);
      ---------------------- 输出 ---------------------------
      CDerived* pD = 392fb8
      CBaseY* pY1 = 392fbc
      CDerived* pD1 = 392fb8
      CBaseY* pY2 = 392fb8
      CBaseY* pY3 = 390ff0
      CDerived* pD3 = 390fec
      
注意:在将CDerived*用隐式 static_cast<>转换到CBaseY*(第5行)时,结果是(指向)CDerived*(的指针向后) 偏移了4(个字节)(译注:4为int类型在内存中所占字节数)。为了知道static_cast<> 实际如何,我们不得不要来看一下CDerived的内存布局。

CDerived的内存布局(Memory Layout)
[img]http://www.vckbase.com/document/journal/vckbase48/images/static_cast_layout.gif[/img] 
http://www.vckbase.com/document/journal/vckbase48/images/static_cast_layout.gif
如图所示,CDerived的内存布局包括两个对象,CBaseX 和 CBaseY,编译器也知道这一点。因此,当你将CDerived* 转换到 CBaseY*时,它给指针添加4个字节,同时当你将CBaseY*转换到CDerived*时,它给指针减去4。然而,甚至它即便不是一个CDerived你也可以这样做。
当然,这个问题只在如果你做了多继承时发生。在你将CDerived转换 到 CBaseX时static_cast<> 和 reinterpret_cast<>是没有区别的。

情况3:void*之间的向前和向后转换

因为任何指针可以被转换到void*,而void*可以被向后转换到任何指针(对于static_cast<> 和 reinterpret_cast<>转换都可以这样做),如果没有小心处理的话错误可能发生。



    CDerived* pD = new CDerived();
        printf("CDerived* pD = %x\n", (int)pD);
          CBaseY* pY = pD; // 成功编译, pY = pD + 4
        printf("CBaseY* pY = %x\n", (int)pY);
            void* pV1 = pY; //成功编译, pV1 = pY
        printf("void* pV1 = %x\n", (int)pV1);
               // pD2 = pY, 但是我们预期 pD2 = pY - 4
        CDerived* pD2 = static_cast<CDerived*>(pV1);
        printf("CDerived* pD2 = %x\n", (int)pD2);
        // 系统崩溃
        // pD2->bar();
        ---------------------- 输出 ---------------------------
        CDerived* pD = 392fb8
        CBaseY* pY = 392fbc
        void* pV1 = 392fbc
        CDerived* pD2 = 392fbc
     
[b]一旦我们已经转换指针为void*,我们就不能轻易将其转换回原类。在上面的例子中,从一个void* 返回CDerived*的唯一方法是将其转换为CBaseY*然后再转换为CDerived*。 [/b]但是如果我们不能确定它是CBaseY* 还是 CDerived*,这时我们不得不用dynamic_cast<> 或typeid[2]。

注释:
1. dynamic_cast<>,从另一方面来说,可以防止一个泛型CBaseY* 被转换到CDerived*。
2. dynamic_cast<>需要类成为多态,即包括“虚”函数,并因此而不能成为void*。
参考: 
1. [MSDN] C++ Language Reference -- Casting 
2. Nishant Sivakumar, Casting Basics - Use C++ casts in your VC++.NET programs 
3. Juan Soulie, C++ Language Tutorial: Type Casting
推荐链接:如何在运行时确定对象类型(RTTI)

 

分享到:
评论

相关推荐

    基于智能温度监测系统设计.doc

    基于智能温度监测系统设计.doc

    搜广推推荐系统中传统推荐系统方法思维导图整理-完整版

    包括userCF,itemCF,MF,LR,POLY2,FM,FFM,GBDT+LR,阿里LS-PLM 基于深度学习推荐系统(王喆)

    2023-04-06-项目笔记 - 第三百五十五阶段 - 4.4.2.353全局变量的作用域-353 -2025.12.22

    2023-04-06-项目笔记-第三百五十五阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.353局变量的作用域_353- 2024-12-22

    和美乡村城乡融合发展数字化解决方案.docx

    和美乡村城乡融合发展数字化解决方案.docx

    CNN基于Python的深度学习图像识别系统

    基于Python的深度学习图像识别系统是一个利用卷积神经网络(CNN)对图像进行分类的先进项目。该项目使用Python的深度学习库,如TensorFlow,构建和训练一个模型,能够自动识别和分类图像中的对象。系统特别适合于图像处理领域的研究和实践,如计算机视觉、自动驾驶、医疗影像分析等。 项目的核心功能包括数据预处理、模型构建、训练、评估和预测。用户可以上传自己的图像或使用预定义的数据集进行训练。系统提供了一个直观的界面,允许用户监控训练进度,并可视化模型的性能。此外,系统还包括了一个模型优化模块,通过调整超参数和网络结构来提高识别准确率。 技术层面上,该项目使用了Python编程语言,并集成了多个流行的机器学习库,如NumPy、Pandas、Matplotlib等,用于数据处理和可视化。模型训练过程中,系统会保存训练好的权重,以便后续进行模型评估和预测。用户可以通过简单的API调用,将新的图像输入到训练好的模型中,获取预测结果。

    拳皇97.exe拳皇972.exe拳皇973.exe

    拳皇97.exe拳皇972.exe拳皇973.exe

    基于python和协同过滤算法的电影推荐系统

    基于python和协同过滤算法的电影推荐系统 基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法的电影推荐系统基于python和协同过滤算法

    DEV-CPP-RED-PANDA

    DEV-CPP-RED-PANDA

    Python语言求解旅行商(TSP)问题,算法包括禁忌搜索、蚁群算法、模拟退火算法等

    Python语言求解旅行商问题,算法包括禁忌搜索、蚁群算法、模拟退火算法等。

    pdfjs2.5.207和4.9.155

    pdfjs 用于在浏览器中查看/预览/打印pdf。 pdfjs 2.5.207 支持firefox/chrome/edge/ie11以上版本。 如果需要支持旧版本浏览器,可以使用这个,是未修改过的原版,支持打印和下载按钮。亲测有效。 pdf 4.9.155分两个包: pdfjs-4.9.155-dist.zip pdfjs-4.9.155-legacy-dist.zip

    建设项目现场高温人员中暑事故应急预案.docx

    建设项目现场高温人员中暑事故应急预案

    数据结构上机实验大作业-线性表选题.zip

    数据结构上机实验大作业-线性表选题.zip

    基于高德地图的校园导航全部资料+详细文档+高分项目.zip

    【资源说明】 基于高德地图的校园导航全部资料+详细文档+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    全自动批量建站快速养权重站系统【纯静态html站群版】:(GPT4.0自动根据关键词写文章+自动发布+自定义友链+自动文章内链+20%页面加提权词)

    【静态站群程序视频演示,只有视频,不含程序,下载须知】【静态站群程序视频演示,只有视频,不含程序,下载须知】全自动批量建站快速养权重站系统【纯静态html站群版】:(GPT4.0自动根据关键词写文章+自动发布+自定义友链+自动文章内链+20%页面加提权词)

    9.30 SWKJ 男头7张+女头2张.zip

    9.30 SWKJ 男头7张+女头2张.zip

    基于java+springboot+vue+mysql的技术交流和分享平台 源码+数据库+论文(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea、vscode 数据库:MySql5.7以上 部署环境:maven 数据库工具:navicat

    一个通过单片机在各种屏幕上显示中文的解决方案.7z

    一个通过单片机在各种屏幕上显示中文的解决方案.7z

    Halcon模板匹配图像包

    图像

    线上辅导班系统-JAVA-基于springboot的线上辅导班系统的开发与设计(毕业论文)

    一、用户管理功能 用户注册与登录 学生注册:学生可以通过手机号、邮箱、社交账号等方式注册,填写个人信息(如姓名、年龄、学校等)。 家长/监护人账户:支持家长/监护人注册并管理学生账户,查看学习进度和成绩。 教师账户:教师可以注册并设置个人资料,上传资质认证文件。 管理员账户:管理员负责整个系统的管理,包括用户管理、课程管理、平台设置等。 用户权限管理 角色权限:系统根据用户类型(学生、家长、教师、管理员)分配不同权限,确保信息安全。 家长监督:家长可以查看子女的学习进度、成绩和教师反馈,参与学习监督。 个人资料管理 用户可以在个人中心更新基本信息,设置个人头像、联系方式、密码等。 支持学籍信息的维护,例如学生的年级、班级、课程历史等。 二、课程管理功能 课程设置 课程创建与编辑:教师或管理员可以创建和编辑课程内容,上传课件、视频、文档等教学材料。 课程分类:根据学科、年级、难度等维度进行课程分类,方便学生浏览和选择。 课程排课:管理员可以设置课程的时间表、教学内容和授课教师,并调整上课时间和频率。 课程安排与通知 课程预约:学生可以在线选择并预约感兴趣的课程,系统根据学生的时

    英特尔2021-2024年网络连接性和IPU路线图

    内容概要:本文档介绍了英特尔2021年至2024年的网络连接性产品和智能处理单元(IPU)的战略和技术路线图。涵盖了从10GbE到200GbE的不同系列以太网适配器的特性、性能和发布时间。详细列出了各个产品的关键功能,如PCIe接口、安全特性、RDMA支持等。同时,介绍了IPU的发展计划,包括200G、400G和800G的不同代次产品的性能提升和新的功能特点。 适合人群:从事网络工程、数据中心管理、IT架构设计的专业技术人员。 使用场景及目标:本文档主要用于了解英特尔未来几年在以太网适配器和IPU领域的技术和产品规划,帮助企业在采购和部署网络设备时做出决策。同时,为研究人员提供最新技术发展趋势的参考。 其他说明:文档内容涉及的技术细节和时间表可能会有变动,请以英特尔官方发布的最新信息为准。

Global site tag (gtag.js) - Google Analytics