精华内容
下载资源
问答
  • c语言 字符串清空

    万次阅读 2019-06-11 05:45:09
    假设这个一维字符串数组是str[80]----不一定是一维字符串数组,多维数组,结构都可以。方法1:使用运行库函数memset(): (推荐)memset(str, 0, sizeof(str));方法2:使用Windows API函数ZeroMemory(): ZeroMemory...

    假设这个一维字符串数组是str[80]----不一定是一维字符串数组,多维数组,结构都可以

    方法1:使用运行库函数memset(): (推荐)
    memset(str, 0, sizeof(str));

    方法2:使用Windows API函数ZeroMemory():
    ZeroMemory(str, sizeof(str));

    但不能用于指针。指针的情况下,必须这样:
    struct mystr {.......} *p;
    ...
    memset(p, 0, sizeof(struct mystr));
    或:
    ZeroMemory(p, sizeof(struct mystr));

    展开全文
  • 字符串清空方法

    万次阅读 2018-02-23 17:04:41
    假设这个一维字符串数组是str[80]----不一定是一维字符串数组,多维数组,结构都可以。 方法1:使用运行库函数memset(): memset(str, 0, sizeof(str)); 方法2:使用Windows API函数ZeroMemory(): ZeroMemory(str, ...
    
    假设这个一维字符串数组是str[80]----不一定是一维字符串数组,多维数组,结构都可以。
    
    方法1:使用运行库函数memset():
    memset(str, 0, sizeof(str));
    
    方法2:使用Windows API函数ZeroMemory():
    ZeroMemory(str, sizeof(str));
    
    但不能用于指针。指针的情况下,必须这样:
    struct mystr {.......} *p;
    ...
    memset(p, 0, sizeof(struct mystr));
    或:
    ZeroMemory(p, sizeof(struct mystr));
    
    展开全文
  • C语言直接清空数组、字符串

    千次阅读 2020-05-27 20:27:52
    我说的字符串不是C++的STL,是C语言的字符数组 (1)循环方法 char a[ ]="aaaaaaaa"; //定义字符数组 for (unsigned int i = 0; i < strlen(a); i++) a[i] = '\0' ; //for循环清空数组 (2) memset函数方法 ...

    我说的字符串不是C++的STL,是C语言的字符数组

    (1)循环方法

    char a[ ]="aaaaaaaa";               //定义字符数组
    for (unsigned int i = 0; i < strlen(a); i++)
          a[i] = '\0' ;                      //for循环清空数组 
    

    (2) memset函数方法

    memset包含在头文件string.h中,函数原型为:memset(void *s,int ch,size_t n)。


    char a[ ]="aaaaaaaa";            //定义字符数组
    memset(a, 0, sizeof a);          //清空数组 
    

    (3)strcpy

    直接使用strcpy将一个空串赋值给字符串就可以,需要string.h


    char ss[11] = {"hello world"}; //当前为hello world
    strcpy(ss, "");
    //现在的ss就是空串了
    

    展开全文
  • c++字符串与c字符串

    千次阅读 多人点赞 2019-05-27 19:32:26
    字符串字面量3.C++ std::string 类3.1 C风格字符串的优势和劣势3.2 使用string类3.2.1 std::string 字面量3.2.2 c++字符串的数值转换(1)字符串转数值(2)数值转字符串3.2.3 常用字符串函数3.2.4 原始字符串字面量 ...


    你编写的每个应用程序都会使用某种类型的字符串。使用老式C语言时,没有太多的选择,只
    能使用普通的以null结尾的字符数组来表示字符串。遗憾的是,这种表示方式会导致很多问题,例 如会导致安全攻击的缓冲区溢出。C++ STL包含了一个安全易用的std::string类,这个类没有这些 缺点。

    1. C风格的字符串

    在C语言中,字符串表示为字符的数组。字符串中的最后一个字符是空字符(\0’)
    C++包含一些来自C语言的字符串操作函数,它们在< cstring >头文件中定义。

    函数名称 说明
    strlen() 返回字符串长度,不包含空字符‘\0’的一字节,字符串长度不等于字符个数
    strcpy() 字符串拷贝

    C和C++中的sizeof操作符可用于获得给定数据类型或变量的大小。例如,sizeof(char)返回1,
    因为char的大小是1字节。但是,在C风格的字符串中,sizeof()和strlen()是不同的。绝对不要通过 sizeof()获得字符串的大小。如果C风格的字符串存储为char[],则sizeof()返回字符串使用的实际内存,包括‘\0’字符。例如:

    char text[]= "abcdef";
    size_t s1= sizeof(text); // is 7
    size_t s2 = strlen(text); // is 6
    

    但是,如果C风格的字符串存储为char*, sizeof()就返回指针的大小!例如:

    const char* text2 = "abcdef";
    size_t s3 = sizeof(text2); // is platform-dependent
    size_t s4 = strlen(text2); // is 6
    

    在32位模式编译时,s3的值为4,而在64位编译时,s3的值为8,因为这返回的是指针const char*
    的大小。可在<cstring>头文件中找到操作字符串的C函数的完整列表。

    在Microsoft Visual Studio中使用C风格的字符串函数时,编译器可能会给 出安全相关的警告甚或错误,说明这些函数已经被废弃了。使用其他C标准库函数可以避免这些警告,例如
    strcpy_s()和strcat_s(),这些函数是“安全C库” (ISO/IEC TR 24731)标准的一部分。然而,最好的解决方案是切换到C++的 string 类。

    2. 字符串字面量

    注意,C++程序中编写的字符串要用引号包围。例如,下面的代码输出字符串"hello",这段代码
    包含这个字符串本身,而不是一个包含这个字符串的变量:

    cout <<"hello" << endl;
    

    在上面的代码中,"hello”是一个字符串字面量(string literal),因为这个字符串以值的形式写出,
    而不是一个变量。与字符串字面量关联的真正内存在内存的只读部分中。通过这种方式,编译器可 以重用等价字符串字面量的引用,来优化内存的使用。也就是说,即使一个程序使用了 500次"hello"字符串字面量,编译器也只在内存中创建一个hello实例。这种技术称为字面量池
    (literal pooling)。
    字符串字面量可以赋值给变量,但因为字符串字面量位于内存的只读部分,且使用了字面量池,
    所以这样做会产生风险。C++标准正式指出:字符串字面量的类型为“n个const char的数组”,然而为了向后兼容较老的不支持const的代码,大部分编译器不会强制程序将字符串字面量赋值给 const char类型的变量。这些编译器允许将字符串赋值给不带有const的char,而且整个程序可以 正常运行,除非试图修改字符串。一般情况下,试图修改字符串的行为是没有定义的。它可能会导 致程序崩溃;可能使程序继续执行,看起来没有什么莫名其妙的副作用;可能不加通告地忽略修改 行为;可能修改行为是有效的,这完全取决于编译器。例如,下面的代码展示了未定义的行为:

    char* ptr = "hello"; // Assign the string literal to a variable.
    ptr[1] = 'a ';       // Undefined behavior!
    

    一种更安全的编码方法是在引用字符串常量时,使用指向 const 字符的指针。下面的代码包含
    同样的 bug,但由于这段代码将字符串字面量赋值给 const char* 所以编译器会捕捉到任何写入只 读内存的企图。

    const char* ptr = "hello";  // Assign the string literal to a variable.
    ptr[ 1] = 'a';              // Error! Attempts to write to read-only memory
    

    还可以将字符串字面量用作字符数组(char®的初始值。这种情况下,编译器会创建一个足以放 下这个字符串的数组,然后将字符串复制到这个数组。因此,编译器不会将字面量放在只读的内存中,也不会进行字面量的池操作。

    char arr [] = "hello"; // Compiler takes care of creating appropriate sized 
    					   // character array arr.
    arr[ 1] = 'a ';        // The contents can be modified.
    

    3.C++ std::string 类

    C++提供了一个得到极大改善的字符串概念,并作为标准库的一部分提供了这个字符串的实现。 在C++中,std::string是一个类(实际上是basic string模板类的一个实例),这个类支持
    <cstring >中提 供的许多功能,还能自动管理内存分配。string类在std名称空间的< string >头文件中定义。

    3.1 C风格字符串的优势和劣势

    优势 劣势
    很简单,底层使用了基本的字符类型和数组结构 为了模拟一等字符串数据类型,需要付出很多努力
    量级轻,如果使用得当,只会占用所需的内存 使用难度大,而且很容易产生难以找到的内存bug
    很低级,因此可以按操作原始内存的方式轻松操作和复制字符串 没有利用C++的面向对象特性
    能够很好地被C语言程序员理解 要求程序员了解底层的表示方式

    3.2 使用string类

    尽管string是一个类,但是几乎总是可以把string当做内建类型使用。事实上,把string想象为
    简单类型更容易发挥string的作用。通过运算符重载的神奇作用,C++的string使用起来比C字符串容易得多。

    3.2.1 std::string 字面量

    源代码中的字符串字面量通常解释为const char*。使用用户定义的标准字面量”s”可以把字符串
    字面量解释为std::string。例如:

    auto stringl = "Hello World"; // stringl will be a const char*
    auto string2 = "Hello World"s; // string2 will be an std::string
    

    3.2.2 c++字符串的数值转换

    数值转字符串 字符串转数值
    to_string(int val) int stoi(const string& str, size_t *idx=0, int base=10)
    to_string(unsigned val) long stol(const string& str, size_t *idx=0, int base=10)
    to_string(long val) unsigned long stoul(const string& str, size_t *idx=0, int base=10)
    (1)字符串转数值

    int stoi(const string& str, size_t *idx=0, int base=10)

    stoi将n进制字符串转为十进制,第二个参数是字符串起始位置,第三个参数表示n进制

    也可以直接用重载的 int stoi(const string& str),默认字符串为十进制,起始位置为0,制

    #include<string>
    #include <iostream>
    #include <exception>
    using namespace std;
    int main()
    {
    	int i=0;
    	try
    	{
    		i = stoi("FEEF", 0, 16);
    		//int i = stoi("我的"); 输入非法时,可以捕获异常"invalid stoi argument"
    	}
    	catch (exception e)
    	{
    		cout << e.what() << endl;
    	}
    	system("pause");
    	return 0;
    }
    

    输出结果:
    在这里插入图片描述

    (2)数值转字符串

    转十进制可以用to_string,但是低版本的编译器可能不支持

    转多进制可以用_itoa_s,但似乎没有安全机制,导致无法捕获异常

    	char cstr[20];
    	_itoa_s(100,cstr,2);
    	cout << cstr << endl;
    

    转多进制还可以用 stringstream

    #include<string>
    #include <iostream>
    #include <sstream>
    #include <bitset>
    using namespace std;
    int main()
    {
    
       int num = 1234;
       stringstream stream;
    
       //转二进制
       stream << bitset<16>(num);
       cout << stream.str() <<endl;
       stream.str(""); //清空缓存,如果注释掉,那么会输出所有的历史结果
       //转8进制
       stream << oct << num;
       cout << stream.str() << endl;
       stream.str("");
       //转十六进制
       stream << hex << num;
       cout << stream.str() << endl;
       stream.str("");
       system("pause");
       return 0;
    }
    

    结果:
    在这里插入图片描述

    如果需要把格式化后的字符串通过>>输出到字符串, 必须每次都调用clear()方法

    3.2.3 c++常用字符串函数

    函数 功能
    append 将字符添加到字符串的末尾
    at 返回字符串中的指定位置处的元素的引用
    c_str 将字符串的内容转换为 C 样式空终止字符串
    data 转换为字符数组的字符串的内容
    empty 测试是否该字符串包含的字符
    erase 从指定位置字符串中移除元素或某个范围的元素
    find 与指定的字符序列匹配的子字符串的第一个匹配项的向前搜索字符串
    find_first_not_of 搜索与指定任何的字符串元素相匹配的第一个字符的字符串
    find_first_of 搜索与指定任何的字符串元素相匹配的第一个字符的字符串
    rfind 向后方向中的首次出现的与指定的字符序列匹配的子字符串搜索字符串
    pop_back 清除该字符串的最后一个元素
    push_back 该字符串的末尾添加一个元素
    insert 将某个元素的数目或某个范围的元素插入到指定位置的字符串
    length 返回字符串中的元素的当前数目
    replace 替换指定的字符或从其他区域或字符串或 C 字符串复制的字符在字符串中位于指定位置处的元素
    substr 从指定位置的字符串开头的复制的子字符串的最大字符数

    3.2.4 原始字符串字面量

    原始字符串字面量(raw string literal)是可以横跨多行代码的字符串字面量,不需要转义嵌入的双引号,像\t和\1!这种转义序列不按照转义序列的方式处理,而是按照普通文本的方式处理。如果像下面这样编写普通的字符串字面量,那么会收到一个编译器错误,因为 字符串包含了未转义的引号:

    string str = "Hello "World"!// Error!
    

    对于普通的字符串,必须转义双引号,如下所示:

    string str = "Hello \"World\"!";
    

    对于原始字符串字面量,就不需要转义引号了。
    原始字符串字面量的写法:

    string str = R"(Hello "World"!)";
    

    原始字符串字面量可以跨越多行代码。例如,如果像下面这样编写普通的字符串字面量,那么会收到一个编译器错误,因为普通的字符串字面量不能跨越多行:

    string str = "Line 1
    Line 2 with \t"; // Error!
    

    可使用如下原始字符串字面量来替代:

    string str = R"(Line 1
    Line 2 with \t)";
    

    这也说明,使用原始字符串字面量时,\t转义字符没有替换为实际的制表符字符,而是按照字面形式保存。将str写入控制台得到的输出如下所示:
    Line 1
    Line 2 with \t
    因为原始字符串字面量以)“结尾,所以使用这个语法时,不能在字符串中嵌入)”。例如,下面的 字符串是不合法的,因为在这个字符串中间包含了一个)”:

    string str = R"(The characters )"n are embedded in this string)" // Error!
    

    如果需要嵌入)",则需要使用扩展的原始字符串字面量语法,如下所示:

    R"d-char-sequence(r-char-sequence)d-char-sequence"
    

    r-char-sequence是实际的原始字符串。d-char-sequence是可选的分隔符序列,原始字符串首尾的分隔符序列应该一致。分隔符序列最多能有16个字符。应选择未出现在原始字符串字面量中的序列作为分隔符序列。上面的例子可以改用唯一的分隔符序列:

    string str = R"-(The characters )" are embedded in this string)-";
    

    在操作数据库查询字符串和正则表达式等字符串时,原始字符串字面量可以令程序的编写更加方便。

    展开全文
  • void *memset(void *s, int ch, size_t n); 函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。 memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体...
  • 字符串数组清空的操作

    万次阅读 2016-06-01 17:06:51
    1、memset(name,'\0',sizeof(name))吧。...就相当于清空了,只不过需要注意再次赋值时最后一位+1要赋值'\0',若要全部清空,最有效率的方法是 4、bzero(name, sizeof(name))了,当然,用memset(name, '\0', sizeof(nam
  • 关于清空字符串数组

    2015-12-11 21:00:00
    嗯,由于要多次输出某字符串数组,比如str[100], 所以,每次输出完之后需要对其进行重置╮( ̄▽ ̄)╭ 可以使用如下的函数:  menset(str, 0, 100); 嗯,一共三个参数,很容易看明白哇<( ̄︶ ̄)/ 度娘上是...
  • C#中要如何才能删除一个字符串数组中的空字符串呢?随着微软对C#不断发展和更新,C#中对于数组操作的方式也变得越来越多样化。以往要实现过滤数组中的空字符串,都是需要实行循环的方式来排除和过滤。C#3.0新增的...
  • 一串字符,即若干个字符构成的一个序列C语言中没有字符串类型,只能用字符数组表示字符串,为了方便对字符串的处理,C语言提供了很多简化写法C语言规定,一个合法的字符串的最后一个字符必须为'\0',即'\0'为字符串...
  • JS中清空字符串前后空格

    千次阅读 2013-07-19 16:10:35
    在JS 操作的时候 长期会有对字符串的操作, 但是在JS 中不像在C#中 有字符串的方法 Trim() 来对字符串进行处理 。 所以自己写一个对字符串前后清楚空格的方法还是有必要的  以免以后忘记了 在这里记录一下。 //...
  • C++基础---字符串(string型字符串)

    千次阅读 2015-09-03 17:56:48
    1. 字符串(string型字符串) 1.1 C++字符串的定义 字符串:是以空字符(即 ‘\0’)结尾的字符数组。 注:‘\0’是一个空字符标志,它的ASCII码为0。C++中有好多处理字符串的函数,他们都是以空字符为结束标志,如...
  • c语言字符串

    万次阅读 多人点赞 2018-12-05 14:04:48
    c语言字符串都是以“/0”结尾 而这里就有三个概念 EOF /0 -1 /n 首先c语言中所有字符串的结尾标志都是/0 是字符串结尾的标志 它是一种转义符 而EOF是文件流结束标志代表着 文件(file),也可以是标准输入...
  • 除了在定义字符数组时初始化外,还可以通过scanf从键盘输入字符串。下面写一个程序: # include <stdio.h> int main(void) { char str[10]; //str是string的缩写, 即字符串 printf(“请输入字符串:”); scanf...
  • 字符串的逆序 以及字符串的转换

    千次阅读 2016-04-20 11:05:05
    给定一个字符串str,请在单词间做逆序调整,如“pig loves dog”逆序成“dog loves pig”;如“I'm a student.”逆序成“students. a I'm”。 对于这个题目我们的思想就是装换。第一步将全部的字符串前后交换位置...
  • C++ 字符串 int转字符串

    千次阅读 2018-10-22 13:08:13
    1、使用stringstream #include &lt;sstream&gt; int i; stringstream ss;...注意:使用stringstream时的清空操作 ... 在C++中可以使用stringstream来很方便的进行类型转换,字符串串接,不过注意重...
  • jquery自动获取光标在字符串后 var str=$("#callnumber").val(); $("#callnumber").val("").focus().val(str);jquery点击按钮自动清空输入框文本再聚焦 $(".close")....
  • python整数、字符串、字节串

    万次阅读 2019-08-23 10:38:49
    python整数、字符串、字节串 文章目录python整数、字符串、字节串一、整数、字符串、字节串之间的相互转换1.进制转换2.字符to整数3.字节串to整数4.整数to字节串5.整数to字符串6.字符串to字节串7.字节串to字符串二、 ...
  • java 字符串字符串缓冲区

    千次阅读 2015-05-08 15:54:00
    本文学习并总结java中的字符串。内容包括String字符串常用方法、StringBuffered和StringBuilder功能介绍,学习中练习了论坛中的一些提问问题,同时也对所学知识进行了验证巩固。 String类 String是java的字符...
  • 将一个字符串中的一个空格替换成另外一个字符串,首先需要解决字符串长“%20”就需要每遇到一个空格字符就得增加两个长度,接下来就是遍历字符串,并且遇到空格就替换,可想而知,从前往后遍历比较麻烦繁琐,所以...
  • c++存储字符串的方法0、 读取字符串1、char 数组2、string 类型 0、 读取字符串 c++ 读取字符串的方式有很多,除了常用的scanf()、cin>>,还有其他函数,参见:C++基础:各种输入方法总结,cin、cin.get()、...
  • 如何JTextArea里的内容清空或用其他字符串赋值?还有怎么设成不可编辑? 1.如何JTextArea里的内容清空或用其他字符串赋值?还有怎么设成不可编辑? 该类里没有这些方法,只有一个replaceRange(String str, int ...
  • 输入一行字符串,将该字符串中所有空格删除,并将得到的新字符串输出。 例如: 输入:Hello,My name is yy.Nice to meet you! 输出:Hello,Mynameisyy.Nicetomeetyou! 源码: #include<iostream> using ...
  • 1.使用js的trim()方法 var str1 = &...//原字符串&quot; hello world &quot; console.log(str2);//除去前后空格&quot;hello world&quot; 2.使用正则 function trimStr(str){ var ..
  • /** * 提取字符串中图片url地址 * @param type $str * @return type */ function getimgs($str) { $reg = '/((http|https):\/\/)+(\w+\.)+(\w+)[\w\/\.\-]*(jpg|gif|png)/'; $matches
  • QT 对QString字符串的操作

    万次阅读 多人点赞 2019-02-22 11:49:57
    这里这些对字符串的操作做一个整理和总结。 1. 将一个字符串追加到另一个字符串的末尾 QString str1 = "hello "; QString str2 = "world"; str1.append(str2); // str1 = "hello world" st...
  • 问题:输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。 输入格式: 输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。 输出格式: 在一行...
  • 例如,输入”They are students.”和”aeiou”,则删除之后的第一个...思路:不可避免的是遍历第一个字符串,如果遍历一个字符,都需要去第二个字符串中查找其存不存在,那么复杂度会是O(nm),当然由于字符数有限,所以

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 236,434
精华内容 94,573
关键字:

怎么把字符串清空