【String的介绍及使用】

news2024/9/20 21:42:43

String的介绍及使用

##

小杨

为何学习string以及string的简单介绍

学习string类的原因

C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,
但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可
能还会越界访问。

简单介绍string类
  1. 字符串是表示字符序列的类
  2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作
    单字节字符字符串的设计特性。
  3. string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型。
  4. string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits
    和allocator作为basic_string的默认参数。
  5. 注意,这个类独立于所使用的编码来处理字节:如果用来处理多字节或变长字符(如UTF-8)的序列,这个
    类的所有成员(如长度或大小)以及它的迭代器,将仍然按照字节(而不是实际编码的字符)来操作。

总结:

  1. string是表示字符串的字符串类

  2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。

  3. string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator> string;

  4. 不能操作多字节或者变长字符的序列。 在使用string类时,必须包含#include头文件以及using namespace std;

函数的定义

功能简单概括函数名称功能说明
defaultstring()构造空的string对象,即空字符串
copystring(const string& str)拷贝构造str对象
substringstring(const string& str, size_t pos, size_t len = npos)从str的pos位置开始复制len个字符
from c - stringstring(const char* s)用C-string来构造string类对象
from sequencestring(const char* s, size_t n)复制指向s的前n个字符
fillstring(size_t n, char c)复制n个c字符
rangetemplate string(InputIterator first, InputIterator last)迭代器区间构造
	string();//构造空字符串

	string str1("嗨嗨,来喽!");
	string str2(str1);//拷贝构造

	string str3(str1, 0, 3);//从str1的第0个位置开始复制3个字符

	string str4("我是C风格的字符串");//C-string来构造string对象

	string str5("我是C风格的字符串", 3);//复制C-stirng的前3个字符

	string str6(10, 'c');//复制10个字符c


	vector<char> v1{ 'a','v','b','c'};
	string str7(v1.begin(), v1.end());//迭代器区间构造
	while (!str7.empty())
	{
		cout << str7 << "";
		str7.erase();
	}

赋值运算符

string& operator= (const string& str);

string& operator= (const char* s);

string& operator= (char c);

  std::string str1, str2, str3;
  str1 = "Test string: ";   // c-string
  str2 = 'x';               // single character
  str3 = str1 + str2;       // string

  std::cout << str3  << '\n';
//answer
Test string: x

迭代器相关

begin和end

Returns/ an iterator /pointing/ to the first character/ of the string.
返回一个指向字符串第一个位置的迭代器

iterator begin(); 
const_iterator begin() const;

Returns/ an iterator/ pointing /to the past-the-end character /of the string.
返回一个指向字符串末尾后的迭代器

  iterator end();
  const_iterator end() const;
	string s1("这是最好的时代,这是最坏的时代");
	string::iterator it = s1.begin();
	while (it != s1.end())
	{
		cout << *it;
		++it;
	}

	std::string str("test string");
	for (std::string::iterator it = str.begin(); it != str.end(); ++it)
		std::cout << *it<<" ";


		std::cout << '\n';

在这里插入图片描述

rbegin和rend

Returns/ a reverse iterator/ pointing /to the last character /of the string
返回一个指向字符串最后一个字符的反向迭代器

  reverse_iterator rbegin();
  const_reverse_iterator rbegin() const;

Returns/ a reverse iterator/ pointing/ to the theoretical element /preceding the first character/ of the string (which is considered its reverse end).
返回一个反向迭代器,指向字符串第一个字符前面的理论元素(被认为是字符串的反向结束)。

	string s1("abcdefg");
	string::reverse_iterator it = s1.rbegin();
	while (it != s1.rend())
	{
		cout << *it;
		++it;
	}

在这里插入图片描述

容量相关

size和length

size_t size() const;
size_t length() const;

两者都是返回字符串的长度,只是名字不同。

string s1("hello");
cout << s1.size() << " " << s1.length() << endl;

在这里插入图片描述

max_size

size_t max_size() const;

返回字符串的最大大小

std::string str("Test string");
std::cout << "size: " << str.size() << "\n";
std::cout << "length: " << str.length() << "\n";
std::cout << "capacity: " << str.capacity() << "\n";
std::cout << "max_size: " << str.max_size() << "\n";

在这里插入图片描述

resize

void resize (size_t n);
void resize (size_t n, char c);

改变字符串大小

void resize (size_t n);
void resize (size_t n, char c);//多余的用给定的c字符代替

如果n小于当前字符串,就将当前长度缩短到n个字符,移除多余的字符。
如果n大于当前字符串长度,当前字符填充到n,如果n被制定了,就用那个指定了的字符插入。

	std::string str("I like to code in C");
	std::cout << str << '\n';

	unsigned sz = str.size();

	str.resize(sz + 2, '+');
	std::cout << str << '\n';

	str.resize(14);
	std::cout << str << '\n';

在这里插入图片描述

capacity

size_t capacity() const;

返回当前字符串所开辟的空间

	std::string str("Test string");
	std::cout << "size: " << str.size() << "\n";
	std::cout << "length: " << str.length() << "\n";
	std::cout << "capacity: " << str.capacity() << "\n";
	std::cout << "max_size: " << str.max_size() << "\n";

在这里插入图片描述

reserve

void reserve (size_t n = 0);

请求容量的改变
 1、当n大于对象当前的capacity时,将capacity扩大到n或大于n。
 2、当n小于对象当前的capacity时,什么也不做。

		string s("YZH");
		cout << s << endl; //YZH
		cout << s.size() << endl; //3
		cout << s.capacity() << endl; //15

		//reverse(n)当n大于对象当前的capacity时,将当前对象的capacity扩大为n或大于n
		s.reserve(100);
		cout << s << endl; //YZH
		cout << s.size() << endl; //3
		cout << s.capacity() << endl; //111

		//reverse(n)当n小于对象当前的capacity时,什么也不做
		s.reserve(1);
		cout << s << endl; //YZH
		cout << s.size() << endl; //3
		cout << s.capacity() << endl; //111
clear

void clear();

清空字符串

	string s1("hello");
	s1.clear();
	cout << s1 << endl;//空
empty

bool empty() const;

检测字符串是否为空

	string s1("hello");
	//如果返回1即为空,否则不为空
	cout << s1.empty() << endl;

在这里插入图片描述

元素访问相关

operator[ ]
  char& operator[] (size_t pos); 
  const char& operator[] (size_t pos) const;

Returns/ a reference/ to the character/ at position pos/ in the string.
返回对字符串中位置为pos的字符的引用。

	std::string str("Test string");
	str[0]='y';
	for (int i = 0; i < str.length(); ++i)
	{
		std::cout << str[i];//访问指定元素下标  yest string
	}
at
  char& at (size_t pos); 
  const char& at (size_t pos) const;

Returns/ a reference/ to the character/ at position pos/ in the string.
返回对字符串中位置为pos的字符的引用。

	std::string str("Test string");
	for (int i = 0; i < str.length(); ++i)
	{
		std::cout << str.at(i);
	}

string修改相关

operator+=

string (1) string& operator+= (const string& str);
c-string (2) string& operator+= (const char* s);
character (3) string& operator+=(char c);

Extends the string by appending additional characters at the end of its current value:
在当前字符串的末尾追加

	std::string name("John");
	std::string family("Smith");
	name += " K. ";         // c-string
	name += family;         // string
	name += '\n';           // character
append
函数声明函数解释
string& append (const string& str);追加字符串
string& append (const string& str, size_t subpos, size_t sublen);追加子串
string& append (const char* s);追加C风格字符串
string& append (const char* s, size_t n);追加字符串的前n个字符
string& append (size_t n, char c);追加n个c字符
template string& append (InputIterator first, InputIterator last);迭代器追加
  std::string str;
  std::string str2="Writing ";
  std::string str3="print 10 and then 5 more";

  // used in the same order as described above:
  str.append(str2);                       // "Writing "
  str.append(str3,6,3);                   // "10 "
  str.append("dots are cool",5);          // "dots "
  str.append("here: ");                   // "here: "
  str.append(10u,'.');                    // ".........."
  str.append(str3.begin()+8,str3.end());  // " and then 5 more"
  str.append<int>(5,0x2E);                // "....."

  std::cout << str << '\n';
push_back

void push_back (char c);
将字符c追加到字符串的末尾,使其长度增加1。

	string s1("hello");
	cout << s1.size() << endl;
	s1.push_back('y');
	cout << s1 << " " << s1.size();

在这里插入图片描述

assign
Column 1Column 2
string& assign (const string& str);用str替换当前字符串
string& assign (const string& str, size_t subpos, size_t sublen);子串替换
string& assign (const char* s);C风格字符串替换
string& assign (const char* s, size_t n);用s的前n个字符替换
string& assign (size_t n, char c);用n个c来替换
template string& assign (InputIterator first, InputIterator last);用迭代器区间替换

为字符串赋一个新值,替换其当前内容。

std::string str;
  std::string base="The quick brown fox jumps over a lazy dog.";

  // used in the same order as described above:

  str.assign(base);
  std::cout << str << '\n';

  str.assign(base,10,9);
  std::cout << str << '\n';         // "brown fox"

  str.assign("pangrams are cool",7);
  std::cout << str << '\n';         // "pangram"

  str.assign("c-string");
  std::cout << str << '\n';         // "c-string"

  str.assign(10,'*');
  std::cout << str << '\n';         // "**********"

  str.assign<int>(10,0x2D);
  std::cout << str << '\n';         // "----------"

  str.assign(base.begin()+16,base.end()-12);
  std::cout << str << '\n';         // "fox jumps over"
insert
函数声明功能说明
string& insert (size_t pos, const string& str);在pos位置插入str的副本
string& insert (size_t pos, const string& str, size_t subpos, size_t sublen);在pos位置插入str的子串
string& insert (size_t pos, const char* s);在pos位置插入C风格的字符串
string& insert (size_t pos, const char* s, size_t n);在pos位置插入C风格字符串的前n个字符
string& insert (size_t pos, size_t n, char c);void insert (iterator p, size_t n, char c);在pos位置插入n个c
iterator insert (iterator p, char c);在p所指向位置插入字符c
template void insert (iterator p, InputIterator first, InputIterator last);迭代器区间插入

在字符串中pos(或p)指定的字符前面插入额外的字符。

std::string str="to be question";
  std::string str2="the ";
  std::string str3="or not to be";
  std::string::iterator it;

  // used in the same order as described above:
  str.insert(6,str2);                 // to be (the )question
  str.insert(6,str3,3,4);             // to be (not )the question
  str.insert(10,"that is cool",8);    // to be not (that is )the question
  str.insert(10,"to be ");            // to be not (to be )that is the question
  str.insert(15,1,':');               // to be not to be(:) that is the question
  it = str.insert(str.begin()+5,','); // to be(,) not to be: that is the question
  str.insert (str.end(),3,'.');       // to be, not to be: that is the question(...)
  str.insert (it+2,str3.begin(),str3.begin()+3); // (or )
erase
函数声明功能说明
string& erase (size_t pos = 0, size_t len = npos);从pos位置开始删除len个字符
iterator erase (iterator p);迭代器删除字符
iterator erase (iterator first, iterator last);迭代器区间删除
std::string str ("This is an example sentence.");
  std::cout << str << '\n';
                                           // "This is an example sentence."
  str.erase (10,8);                        //            ^^^^^^^^
  std::cout << str << '\n';
                                           // "This is an sentence."
  str.erase (str.begin()+9);               //           ^
  std::cout << str << '\n';
                                           // "This is a sentence."
  str.erase (str.begin()+5, str.end()-9);  //       ^^^^^
  std::cout << str << '\n';
replace

替代部分字符串

函数声明功能说明
string& replace (size_t pos, size_t len, const string& str);string& replace (iterator i1, iterator i2, const string& str);用str去替换原字符串从pos位置开始len个字符或者替换迭代器区间的所指向的内容
string& replace (size_t pos, size_t len, const string& str,size_t subpos, size_t sublen);用str的子串去替换原字符串的一部分
string& replace (size_t pos, size_t len, const char* s);string& replace (iterator i1, iterator i2, const char* s);用C语言风格字符串去替换原字符串的一部分
string& replace (size_t pos, size_t len, const char* s, size_t n);string& replace (iterator i1, iterator i2, const char* s, size_t n);用C语言风格的字符串的前n个字符去替换原字符串的一部分
string& replace (size_t pos, size_t len, size_t n, char c);string& replace (iterator i1, iterator i2, size_t n, char c);用n个字符c去替换原字符串的一部分
template string& replace (iterator i1, iterator i2, InputIterator first, InputIterator last);用一段迭代器区间的内容去替换目前字符串迭代器区间的部分
std::string base="this is a test string.";
  std::string str2="n example";
  std::string str3="sample phrase";
  std::string str4="useful.";

  // replace signatures used in the same order as described above:

  // Using positions:                 0123456789*123456789*12345
  std::string str=base;           // "this is a test string."
  str.replace(9,5,str2);          // "this is an example string." (1)
  str.replace(19,6,str3,7,6);     // "this is an example phrase." (2)
  str.replace(8,10,"just a");     // "this is just a phrase."     (3)
  str.replace(8,6,"a shorty",7);  // "this is a short phrase."    (4)
  str.replace(22,1,3,'!');        // "this is a short phrase!!!"  (5)

  // Using iterators:                                               0123456789*123456789*
  str.replace(str.begin(),str.end()-3,str3);                    // "sample phrase!!!"      (1)
  str.replace(str.begin(),str.begin()+6,"replace");             // "replace phrase!!!"     (3)
  str.replace(str.begin()+8,str.begin()+14,"is coolness",7);    // "replace is cool!!!"    (4)
  str.replace(str.begin()+12,str.end()-4,4,'o');                // "replace is cooool!!!"  (5)
  str.replace(str.begin()+11,str.end(),str4.begin(),str4.end());// "replace is useful."    (6)
  std::cout << str << '\n';
swap

void swap (string& str);

交换字符串值

	string s1("hello world");
	string s2("你好,世界!");
	s1.swap(s2);
	cout << s1 << endl;//你好,世界!
	cout << s2 << endl;//hello world
pop_back

void pop_back();

删除字符串尾部元素

	string s1("hello world");
	s1.pop_back();//删除尾部元素d
	cout << s1 << endl;//hello worl

字符串运算相关

c_str

const char* c_str() const;

得到C风格字符串

	string s1("hello world");
	cout << s1.c_str() << endl;//hello world
copy

size_t copy (char* s, size_t len, size_t pos = 0) const;

从字符串中复制字符序列

	string s1("helloworld");
	char s2[20];
	//copy(str, n, pos)复制pos位置开始的n个字符到str字符串
	size_t length = s1.copy(s2, 6, 5);
	//copy函数不会在复制内容的末尾附加'\0',需要手动加
	s2[length] = '\0';
	cout << s2 << endl;
find

在字符串中搜索由其参数指定的序列的第一次出现。

函数声明功能介绍
size_t find (const string& str, size_t pos = 0) const;查找第一次出现str,从pos位置开始
size_t find (const char* s, size_t pos = 0) const;查找第一次出现s指向的内容,从pos位置开始
size_t find (const char* s, size_t pos, size_t n) const;从pos开始的前n个字符中查找第一次出现和s指向的内容相同的
size_t find (char c, size_t pos = 0) const;从pos位置开始,查找第一次出现字符c的位置
	string s1("https://blog.csdn.net/2302_79013877?type=blog");
	string s2("csdn");
	cout << s1.find(s2)<< endl;//13
	const char* s3 = "blog";
	cout << s1.find(s3) << endl;//8
	char a = '/';
	cout << s1.find(a);//6
rfind

查找字符串中最后出现的内容

当指定pos时,搜索只包括从位置pos或之前开始的字符序列,忽略从位置pos之后开始的任何可能的匹配。

函数声明功能说明
size_t rfind (const string& str, size_t pos = npos) const;倒着找第一次出现的str的位置
size_t rfind (const char* s, size_t pos = npos) const;倒着找第一次出现与s指向内容相同的位置
size_t rfind (const char* s, size_t pos, size_t n) const;从pos位置开始的n个位置开始找与s指向内容相同的位置
size_t rfind (char c, size_t pos = npos) const;倒着找第一次出现字符c的位置
	string s1("https://blog.csdn.net/2302_79013877?type=blog");
	string s2("csdn");
	cout << s1.rfind(s2)<< endl;//13
	const char* s3 = "blog";
	cout << s1.rfind(s3) << endl;//41
	char a = '/';
	cout << s1.rfind(a);//21
substr

string substr (size_t pos = 0, size_t len = npos) const;

生成子串(返回一个新构造的字符串对象,其值初始化为此对象的子字符串的副本)

	std::string str = "We think in generalities, but we live in details.";
	// (quoting Alfred N. Whitehead)

	std::string str2 = str.substr(3, 5);     // "think"

	std::size_t pos = str.find("live");      // live的位置

	std::string str3 = str.substr(pos);     //live in details.

	std::cout << str2 << ' ' << str3 << '\n';//think live in details.
compare

将字符串对象(或子字符串)的值与其参数指定的字符序列进行比较。

函数声明功能说明
int compare (const string& str) const;比较与str字符串是否相等
int compare (size_t pos, size_t len, const string& str) const;int compare (size_t pos, size_t len, const string& str,size_t subpos, size_t sublen) const;从pos位置开始,以len为长度的范围内判断是否和str或者str的子串相等
int compare (const char* s) const;int compare (size_t pos, size_t len, const char* s) const;判断是否和C风格的字符串或者C风格的字符串的子串相等
int compare (size_t pos, size_t len, const char* s, size_t n) const;判断是否和C风格的字符串的前n个字符相等
std::string str1 ("green apple");
  std::string str2 ("red apple");

  if (str1.compare(str2) != 0)
    std::cout << str1 << " is not " << str2 << '\n';

  if (str1.compare(6,5,"apple") == 0)
    std::cout << "still, " << str1 << " is an apple\n";

  if (str2.compare(str2.size()-5,5,"apple") == 0)
    std::cout << "and " << str2 << " is also an apple\n";

  if (str1.compare(6,5,str2,4,5) == 0)
    std::cout << "therefore, both are apples\n";

//answer
green apple is not red apple
still, green apple is an apple
and red apple is also an apple
therefore, both are apples

string中的常量成员

npos就是size_t 的最大值

string中的非成员函数重载

operator++

连接字符串
string operator+ (const string& lhs, const string& rhs);
string operator+ (const string& lhs, const char* rhs);
string operator+ (const char* lhs, const string& rhs);
string operator+ (const string& lhs, char rhs);
string operator+ (char lhs, const string& rhs);

返回一个新构造的字符串对象,其值是lhs中的字符与rhs中的字符的连接。

 std::string firstlevel ("com");
  std::string secondlevel ("cplusplus");
  std::string scheme ("http://");
  std::string hostname;
  std::string url;

  hostname = "www." + secondlevel + '.' + firstlevel;
  url = scheme + hostname;

  std::cout << url << '\n';
swap

交换两个字符串

void swap (string& x, string& y);

	string s1("hello");
	string s2("world");
	swap(s1, s2);
	cout << s1 << " " <<s2<< endl;//world hello
operator>>和 operator<<

istream& operator>> (istream& is, string& str);
ostream& operator<< (ostream& os, const string& str);

流插入

	string s1;
	cin >> s1;
	cout << s1 << endl;
getline (string)

从流中获取行到字符串
getline函数将从is中提取到的字符存储到str中,直到读取到分隔符delim或换行符’\n’为止。

	string s1;
	getline(cin, s1);//My book ?
	cout << s1 << endl;//My book ?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1974930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解基于百炼平台及函数计算快速上线网页AI助手

引言 在当今这个信息爆炸的时代&#xff0c;用户对于在线服务的需求越来越趋向于即时性和个性化。无论是寻找产品信息、解决问题还是寻求建议&#xff0c;人们都期望能够获得即时反馈。这对企业来说既是挑战也是机遇——如何在海量信息中脱颖而出&#xff0c;提供高效且贴心的…

【C语言】fseek、ftell以及rewind函数(随机文件读写)

文章目录 前言1. fseek1.1 fseek函数原型1.2 fseek函数的形式参数1.3 fseek实例演示 2. ftell2.1 ftell函数原型2.2 ftell函数的实例演示 3. rewind3.1 rewind函数原型3.2 rewind函数实例演示 前言 在之前&#xff0c;我讲过文件的顺序读写。但是我们可不可以随机读写文件呢&a…

PCL从理解到应用【09】 点云特征 | 关键点提取 | 方法汇总

前言 在PCL中&#xff0c;有多种方法和函数可以用来提取点云特征&#xff0c;本文介绍关键点提取。 提取点云关键点&#xff0c;本文介绍的方法包括&#xff1a;SIFT、Harris、NARF、ISS和SUSAN。 Harris 提取点云关键点&#xff0c;效果如下图所示&#xff1a; 白色点是原始…

MATLAB预测模型(2)

一、前言 在MATLAB中&#xff0c;进行线性回归、非线性回归以及统计回归预测可以通过多种方法实现&#xff0c;包括使用内置函数和自定义函数。下面&#xff0c;我将分别给出线性回归、非线性回归和基于统计回归进行预测的基本示例代码。 二、实现 1. 线性回归 MATLAB中的poly…

机器人主板维修|ABB机械手主板元器件故障

【ABB机器人电路板故障原因诊断】 针对上述故障现象&#xff0c;我们需要对ABB机器人IO板进行详细的故障诊断。以下是一些可能的故障原因&#xff1a; 1. 元器件老化或损坏&#xff1a;ABB机械手安全面板上的元器件在长期使用过程中可能出现老化、损坏或接触不良等问题&#xf…

PyCharm运行Python的Flask项目时,愚蠢的执行了默认Flask框架默认配置处理

一&#xff1a;问题描述 因为上半年开始学习完python后&#xff0c;开始转人工智能方向的工作内容&#xff0c;所以这半年几乎在攻关python以及人工智能方向的技能&#xff0c;但是我有喜欢用Java的一些开发的爽点。 最近整Flask的框架时发现了一个问题&#xff0c;我就在Fla…

【数据结构算法经典题目刨析(c语言)】反转链表(图文详解)

&#x1f493; 博客主页&#xff1a;C-SDN花园GGbond ⏩ 文章专栏&#xff1a;数据结构经典题目刨析(c语言) 目录 一、题目描述 二、思路分析 三、代码实现 一、题目描述&#xff1a; 二、思路分析 &#xff1a; 通过三个指针n1,n2,n3来实现链表的反转 1.首先初始化 n1为…

IO流相关

1. IO概述 Java中I/O操作主要是指使用java.io包下的内容&#xff0c;进行输入、输出操作。输入也叫做读取数据&#xff0c;输出也叫做作写出数据。 1.1 IO的分类 根据数据的流向分为&#xff1a;输入流和输出流。 输入流 &#xff1a;把数据从其他设备上读取到内存中的流。 …

力扣SQL50 好友申请 II :谁有最多的好友 UNION ALL

Problem: 602. 好友申请 II &#xff1a;谁有最多的好友 &#x1f468;‍&#x1f3eb; 参考题解 功能概述&#xff1a; 该查询统计 RequestAccepted 表中用户&#xff08;作为请求方或接受方&#xff09;出现的总次数&#xff0c;并找出出现次数最多的用户ID。 执行步骤&a…

PHP语言的学习(ctfshow中web入门web93~web104)

PHP语言基础知识&#xff08;超详细&#xff09;_php开发知识-CSDN博客 PHP特性之CTF中常见的PHP绕过-CSDN博客 浅谈PHP代码执行中出现过滤限制的绕过执行方法_php过滤绕过-CSDN博客 php代码审计(适合小白入门)_php审计入门-CSDN博客 什么是PHP&#xff1f; PHP 是一种脚本…

File 类练习

练习1&#xff1a;在当前模块下的aaa文件夹中创建一个a.txt文件。 分析&#xff1a;当前模块下是没有aaa文件夹的&#xff0c;这里我是手动在当前模块下创建了aaa文件夹&#xff0c;然后在指定a.txt的路径&#xff0c;再createNewFile()的。 public class File1 {public stat…

一键重装系统哪个软件好用_2024年一键重装系统工具排行榜

一键重装系统哪个软件好&#xff1f;现在市面上重装软件五花八门&#xff0c;有些网友不知道哪些好用&#xff0c;下面小编就为大家整理几款不错的电脑一键重新系统软件供大家选择&#xff0c;现整理2024年一键重装系统软件排行。 一键重装系统哪个软件好用&#xff1f; 一键重…

如何系统地自学Python?AI的回答让你少走三年弯路!

系统地自学Python是一个循序渐进的过程&#xff0c;需要掌握基础知识、进阶技能以及实践项目。以下是一个详细的自学Python的指南&#xff1a; 一、学习准备<末尾有AI整理的学习资料、电子书籍、实战项目> 了解Python&#xff1a; Python是一种流行的编程语言&#xff…

入门 PyQt6 看过来(案例)22~ 图表案例

​ ​ def showPie(self):"""绘制饼状图"""# &#xff08;1&#xff09;创建图表和视图chart QChart()chart.setTitle(中国高等教育普及率)chart.legend().setAlignment(Qt.AlignmentFlag.AlignLeft)chartView QChartView(self) # 必须有sel…

CookieMaker工作室合作开发C++项目十一:拟态病毒

&#xff08;注&#xff1a;本文章使用了“无标题技术”&#xff09; 一天&#xff0c;我和几个同事&#xff0c;平台出了点BUG&#xff0c;居然给我刷出了千年杀&#xff0c;同事看得瑕疵欲裂&#xff0c;发誓要将我挫骨扬灰—— &#xff08;游戏入口&#xff1a;和平精英31.…

iOS技术之安装nvmnode完整步骤

1.前提 首先电脑里得有brew、git、vscode这些工具, 当然了要用nvm&node肯定是需要这些基本开发工具 2.删除node环境 如果mac里没有安装过node、npm可以无视直接去 3 安装nvm。 为了保证安装nvm能够成功管理node&#xff0c;必须把电脑里之前安装的node全部清理&#xf…

微信小程序css中配置了文字超出一行或两行则显示省略号对纯数字或纯字母或小数点无效的解决办法

配置了文字超出一行或两行则显示省略号对纯数字或纯字母或小数点无效的解决办法 overflow_title{display: -webkit-box;-webkit-line-clamp: 1;-webkit-box-orient: vertical;overflow: hidden;text-overflow: ellipsis; }只需要加上这两行css代码即可 word-break:break-all;…

Spring泛型的依赖注入

泛型依赖注入就是允许我们在使用spring进行依赖注入的同时&#xff0c;利用泛型的优点对代码进行精简&#xff0c;将可重复使用的代码全部放到一个类之中&#xff0c;方便以后的维护和修改。同时在不增加代码的情况下增加代码的复用性。

Go切片深入学习

Go切片专项学习 go切片扩容机制 go1.18 之前&#xff1a; 1.如果期望容量大于当前容量的两倍就会使用期望容量&#xff1b; 2.如果当前切片的长度小于 1024 就会将容量翻倍&#xff1b; 3.如果当前切片的长度大于 1024 就会每次增加 25% 的容量&#xff0c;直到新容量大于期…

基于AI大模型的数据治理

— 01— 什么是大模型&#xff1f; 大模型是指具有数千万甚至数亿参数的深度学习模型。近年来&#xff0c;随着计算机技术和大数据的快速发展&#xff0c;深度学习在各个领域取得了显著的成果&#xff0c;如自然语言处理&#xff0c;图片生成&#xff0c;工业数字化等。为了提…