C++ String 用法详解

合集下载

C# string.format用法详解

C# string.format用法详解

C#中string.format用法详解这篇文章主要介绍了C#中string.format用法,以实例形式较为详细的讲述了string.format格式化的各种用法,非常具有实用价值,需要的朋友可以参考下本文实例总结了C#中string.format用法。

分享给大家供大家参考。

具体分析如下:String.Format 方法的几种定义:String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项。

String.Format (String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 O bject 实例的值的文本等效项。

String.Format (IFormatProvider, String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项。

指定的参数提供区域性特定的格式设置信息。

String.Format (String, Object, Object) 将指定的 String 中的格式项替换为两个指定的 Object 实例的值的文本等效项。

String.Format (String, Object, Object, Object) 将指定的 String 中的格式项替换为三个指定的 Object 实例的值的文本等效项。

常用的格式化数值结果表常用的几种实例1、字符串的数字格式复制代码代码如下:string str1 =string.Format("{0:N1}",56789); //resul t: 56,789.0string str2 =string.Format("{0:N2}",56789); //res ult: 56,789.00string str3 =string.Format("{0:N3}",56789); //res ult: 56,789.000string str8 =string.Format("{0:F1}",56789); //res ult: 56789.0string str9 =string.Format("{0:F2}",56789); //res ult: 56789.00string str11 =(56789 / 100.0).ToString("#.##"); //result: 567.89string str12 =(56789 / 100).ToString("#.##"); //resul t: 5672、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)复制代码代码如下:string.Format("{0:C}",0.2)结果为:¥0.20 (英文操作系统结果:$0.20)默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数复制代码代码如下:string.Format("{0:C1}",23.15)结果为:¥23.2 (截取会自动四舍五入)格式化多个Object实例复制代码代码如下:string.Format("市场价:{0:C},优惠价{1:C}",23.15,19.82)3、格式化十进制的数字(格式化成固定的位数,位数不能少于未格式化前,只支持整形)代码如下:string.Format("{0:D3}",23) //结果为:023string.Format("{0:D2}",1223) //结果为:1223,(精度说明符指示结果字符串中所需的最少数字个数。

对C++stringappend方法的常用用法详解

对C++stringappend方法的常用用法详解

对C++stringappend⽅法的常⽤⽤法详解C++ string append()添加⽂本使⽤append()添加⽂本常⽤⽅法:直接添加另⼀个完整的字符串:如str1.append(str2);添加另⼀个字符串的某⼀段⼦串:如str1.append(str2, 11, 7);添加⼏个相同的字符:如str1.append(5, '.');注意,个数在前字符在后.上⾯的代码意思为在str1后⾯添加5个".".//========================================#include<iostream>using namespace std;//========================================int main(){string str1="I like C++";string str2=",I like the world.";string str3="Hello";string str4("Hi");//====================================str1.append(str2);str3.append(str2, 11, 7);str4.append(5, '.');//====================================cout<<str1<<endl;cout<<str3<<endl;cout<<str4<<endl;system("pause");return 0;}//========================================运⾏结果为I like C++,I like the world.Hello World.Hi.....以上这篇对C++ string append⽅法的常⽤⽤法详解就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

VC++ CString详解

VC++  CString详解

1、CString 对象的连接:用”+”2、格式化字符串:用CString 对象的Format()方法。

用这种方法的好处是你不用担心用来存放格式化后数据的缓冲区是否足够大,这些工作由CString类替你完成。

格式化是一种把其它不是字符串类型的数据转化为CString类型的最常用技巧。

*****CString s; s.Format(_T("%d"), total);我总是对我的字符串使用_T()宏,这是为了让我的代码至少有Unicode的意识#define _T(x) x // 非Unicode版本(non-Unicode version)而在Unicode环境下是如下定义的:#define _T(x) L##x // Unicode版本(Unicode version)所以在Unicode环境下,它的效果就相当于:s.Format(L"%d", total);如果你认为你的程序可能在Unicode的环境下运行,那么开始在意用Unicode 编码。

比如说,不要用sizeof() 操作符来获得字符串的长度,因为在Unicode环境下就会有2倍的误差。

我们可以用一些方法来隐藏Unicode的一些细节,比如在我需要获得字符长度的时候,我会用一个叫做DIM的宏,这个宏是在我的dim.h文件中定义的,我会在我写的所有程序中都包含这个文件:#define DIM(x) ( sizeof((x)) / sizeof((x)[0]) )这个宏不仅可以用来解决Unicode的字符串长度的问题,也可以用在编译时定义的表格上,它可以获得表格的项数,如下:class Whatever { ... };Whatever data[] = {{ ... },...{ ... },};for(int i = 0; i < DIM(data); i++) // 扫描表格寻找匹配项。

C++Vector用法详解

C++Vector用法详解

C++Vector⽤法详解vector是C++标准模版库(STL,Standard Template Library)中的部分内容。

之所以认为是⼀个容器,是因为它能够像容器⼀样存放各种类型的对象,简单的说:vector是⼀个能够存放任意类型的动态数组,能够增加和压缩数据。

使⽤vector容器之前必须加上<vector>头⽂件:#include<vector>;vector属于std命名域的内容,因此需要通过命名限定:using std::vector;也可以直接使⽤全局的命名空间⽅式:using namespace std;vector成员函数c.push_back(elem)在尾部插⼊⼀个elem数据。

复制代码代码如下:vector<int> v;v.push_back(1);c.pop_back()删除末尾的数据。

复制代码代码如下:vector<int> v;v.pop_back();c.assign(beg,end)将[beg,end)⼀个左闭右开区间的数据赋值给c。

vector<int> v1,v2;v1.push_back(10);v1.push_back(20);v2.push_back(30);v2.assign(v1.begin(),v1.end());c.assign (n,elem)将n个elem的拷贝赋值给c。

复制代码代码如下:vector<int> v;v.assign(5,10);//往v⾥放5个10c.at(int index)传回索引为index的数据,如果index越界,抛出out_of_range异常。

vecto<int> v;cout << v.at(2) << endl;//打印vector中下标是2的数据c.begin()返回指向第⼀个数据的迭代器。

C 中CSTRING的用法详解

C  中CSTRING的用法详解

CStringTCString CStringA CStringW 操作的字符类型:TCHAR操作的字符类型:char操作的字符类型:wchar_t关于TCHAR,char,wchar_t三种字符类型的区别,会在随后的文章中详细解释!下面是一、CString类的几种基本操作:1、长度:GetLength();CString str(_T("abc"));int len=str.GetLength();//len==32、是否为空(即不含字符):IsEmpty();3、清空字符串:Empty();CString str(_T("abc"));BOOL mEmpty=str.IsEmpty();//mEmpty==FALSEstr.Empty();mEmpty=str.IsEmpty();//mEmpty==TRUE4、转换大小写:MakeUpper(),MakeLower();5、转换顺序:MakeReverse();二、字符串的查找1、Find:从制定位置开始查找指定字符串,返回其位置(找不到返回-1)CString str(_T("abcdefg"));int idx=str.Find(_T("cde"),0);//idx的值为2;2、ReverseFind:从字符串末尾开始查找指定的字符,返回其位置,找不到返回-1,虽然是从后向前查找,但是位置为从开始算起;CString str(_T("abcdefg"));int idx=str.ReverseFind('e');//idx的值为4;3、FindOneOf:查找参数中给定字符串中的任意字符,返回第一次出现的位置CString str(_T("abcabcd"));int idx=str.FindOneOf(_T("cbd"));//idx的值为1;三、字符串的提取Left,Mid,Right:分别实现从CString对象的左、中、右进行字符串的提取操作CString str(_T("abcd"));CString strResult=str.Left(2);//strResult==abstrResult=str.Mid(1);//strResult==bcdstrResult=str.Mid(0,2);//strResult==abstrResult=str.Right(2);//strResult==cd四、其他类型与CString类型的转换,CString str;1、格式化字符串Format:实现从int、long等数值类型、TCHAR、TCHAR*等类型向CString 类型转换(注:TCHAR、TCHAR*等类型向CString类型转换,可以直接赋值)--CString->int:_ttoi()--CString->TCHAR*:1)TCHAR*T=str.GetBuffer();str.ReleaseBuffer();2)TCHAR*T=(LPTSTR)(LPCTSTR)str;五、CString对象的Ansi与Unicode转换1、当前工程环境Unicode(窄字节(Ansi)向宽字节(Unicode)转换)CString str;str="abc";char*p="defg";str=p;2、当前工程环境非Unicode(宽字节向窄字节转换)CString str;str=L"abc";wchar_t*p=L"defg";str=p;六、CString对象包含字符串所占用的字节数CString str;int n=str.GetLength()*sizeof(TCHAR);**错误的求法:sizeof(CString)、sizeof(str),这是求指针长度,总是为4。

CONST用法

CONST用法

CONST用法面向对象是C++的重要特性.但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重const1. 限定符声明变量只能被读const int i=5;int j=0;...i=j; //非法,导致编译错误j=i; //合法2. 必须初始化const int i=5; //合法const int j; //非法,导致编译错误3. 在另一连接文件中引用const常量extern const int i; //合法extern const int j=10; //非法,常量不可以被再次赋值4. 便于进行类型检查用const方法可以使编译器对处理内容有更多了解。

#define I=10const long &i=10; /*dapingguo提醒:由于编译器的优化,使得在const long i=10; 时i不被分配内存,而是已10直接代入以后的引用中,以致在以后的代码中没有错误,为达到说教效果,特别地用&i明确地给出了i的内存分配。

不过一旦你关闭所有优化措施,即使const long i=10;也会引起后面的编译错误。

*/ char h=I; //没有错char h=i; //编译警告,可能由于数的截短带来错误赋值。

5. 可以避免不必要的内存分配#define STRING "abcdefghijklmn\n"const char string[]="abcdefghijklm\n";...printf(STRING); //为STRING分配了第一次内存printf(string); //为string一次分配了内存,以后不再分配...printf(STRING); //为STRING分配了第二次内存printf(string);...由于const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。

C#_tostring的用法

C#_tostring的用法

format Code 是可选的格式化代码字符串。

(详细内容请搜索“格式化字符串”查看)必须用“{”和“}”将格式与其他字符分开。

如果恰好在格式中也要使用大括号,可以用连续的两个大括号表示一个大括号,即:“{{”或者“}}”。

常用格式举例:(1)int i=12345;this.textBox1.Text=i.ToSt ring();//结果12345(this指当前对象,或叫当前类的实例)this.textBox2.Text=i.ToSt ring("d8");//结果00012345(2)int i=123;double j=123.45;string s1=st ring.F ormat("t he value is {0,7:d}",i);string s2=st ring.F ormat("t he value is {0,7:f3}",j);this.textBox1.Text=s1 ;//结果the value is 123this.textBox2.Text=s2;//结果the value is 123.450(3)double i=12345.6789;this.textBox1.Text=i.ToSt ring("f2"); //结果12345.68this.textBox2.Text=i.ToSt ring("f6");//结果12345.678900(4)double i=12345.6789;this.textBox1.Text=i.ToSt ring("n"); //结果12,345.68this.textBox2.Text=i.ToSt ring(“n4”); //结果12,345.6789(5)double i=0.126;string s=string.F ormat("the value is {0:p}",i);this.textBox1.Text=i.ToSt ring("p"); //结果12.6%this.textBox2.Text=s; //结果the value is 12.6%(6)DateTime dt=new DateTime(2003,5,25);this.textBox1.Text=dt.ToString("yy.M.d");//结果03.5.25th is.textBox2.Text=dt.ToString(“yyyy年M月”);//结果2003年5月Convert.ToDateTime("2005/12/22 22:22:22").ToString("yyyy/ MM/dd HH:mm:ss")"2005/12/22 22:22:22"(7)int i=123;double j=123.45;string s=string.F ormat("i:{0,-7},j:{1,7}",i,j);//-7表示左对齐,占7位this.textBox1.Text=s ;//结果i:123 ,j: 123.45DateTime.ToString()用法详解我们经常会遇到对时间进行转换,达到不同的显示效果,默认格式为:2006-6-6 14:33:34如果要换成成200606,06-2006,2006-6-6或更多的格式该怎么办呢?这里将要用到:DateTime.ToString的方法(String, IFormatProvider)示例:using System;using System.Globalization;String format="D";Dat eTime dat e=Dat aTime.Now;Response.Write(dat e.ToString(format, Dat eTimeF ormat Info.InvariantInfo));结果输出Thursday, June 16, 2006在这里列出了参数format格式详细用法=======================格式字符关联属性/说明d Short Dat ePatternD LongDatePatternf 完整日期和时间(长日期和短时间)F FullDat eTimePattern(长日期和长时间)g 常规(短日期和短时间)G 常规(短日期和长时间)m、M MonthDayPatternr、R RFC1123Patterns 使用当地时间的 SortableDateTimePattern(基于 ISO 8601)t Short TimePatternT LongTimePatternu UniversalSortableDateTimePattern 用于显示通用时间的格式U 使用通用时间的完整日期和时间(长日期和长时间)y、Y YearMonthPattern下表列出了可被合并以构造自定义模式的模式========================================这些模式是区分大小写的;例如,识别“MM”,但不识别“mm”。

c++string函数详细返回值及用法!

c++string函数详细返回值及用法!

c++string函数详细返回值及⽤法!通过在⽹站上的资料搜集,得到了很多关于string类⽤法的⽂档,通过对这些资料的整理和加⼊⼀些⾃⼰的代码,就得出了⼀份⽐较完整的关于string 类函数有哪些和怎样⽤的⽂档了!下⾯先罗列出string类的函数有哪⼀些,然后再罗列出函数的原型,最后到代码的实现标准C++中提供的string类得功能也是⾮常强⼤的,⼀般都能满⾜我们开发项⽬时使⽤。

现将具体⽤法的⼀部分罗列如下,只起⼀个抛砖引⽟的作⽤吧,好了,废话少说,直接进⼊正题吧!要想使⽤标准C++中string类,必须要包含#include <string>// 注意是<string>,不是<string.h>,带.h的是C语⾔中的头⽂件using std::string;using std::wstring;或using namespace std;string类的⼤部分函数:begin 得到指向字符串开头的Iteratorend 得到指向字符串结尾的Iteratorrbegin 得到指向反向字符串开头的Iteratorrend 得到指向反向字符串结尾的Iteratorsize 得到字符串的⼤⼩length 和size函数功能相同max_size 字符串可能的最⼤⼤⼩capacity 在不重新分配内存的情况下,字符串可能的⼤⼩empty 判断是否为空operator[] 取第⼏个元素,相当于数组c_str 取得C风格的const char* 字符串data 取得字符串内容地址operator= 赋值操作符reserve 预留空间swap 交换函数insert 插⼊字符append 追加字符push_back 追加字符operator+= += 操作符erase 删除字符串clear 清空字符容器中所有内容resize 重新分配空间assign 和赋值操作符⼀样replace 替代copy 字符串到空间find 查找rfind 反向查找find_first_of 查找包含⼦串中的任何字符,返回第⼀个位置find_first_not_of 查找不包含⼦串中的任何字符,返回第⼀个位置find_last_of 查找包含⼦串中的任何字符,返回最后⼀个位置find_last_not_of 查找不包含⼦串中的任何字符,返回最后⼀个位置substr 得到字串compare ⽐较字符串operator+ 字符串链接operator== 判断是否相等operator!= 判断是否不等于operator< 判断是否⼩于operator>> 从输⼊流中读⼊字符串operator<< 字符串写⼊输出流getline 从输⼊流中读⼊⼀⾏string类的函数原型:string类的构造函数:string(const char *s); //⽤c字符串s初始化string(int n,char c); //⽤n个字符c初始化此外,string类还⽀持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。

批处理常用DOS命令之find和findstr的用法详解

批处理常用DOS命令之find和findstr的用法详解

批处理常⽤DOS命令之find和findstr的⽤法详解1.字符串查找:find2.字符串查找增强:findstr⼀.字符串查找:find在⽂件中搜索字符串。

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] “string” [[drive:][path]filename[ …]]/V 显⽰所有未包含指定字符串的⾏。

/C 仅显⽰包含字符串的⾏数。

/N 显⽰⾏号。

/I 搜索字符串时忽略⼤⼩写。

/OFF[LINE] 不要跳过具有脱机属性集的⽂件。

“string” 指定要搜索的⽂字串,[drive:][path]filename 指定要搜索的⽂件。

基本格式:find “要查找的字符串” 要查找的⽂件(不在当前⽬录则需要给出完整路径)例1find "abc" d:\abc.txt在abc.txt中查找字符串abc的⾏。

/I 搜索字符串时忽略⼤⼩写。

例2find /i "abc" d:\abc.txt参数/i代表的是“Ignore”(忽略),也就是忽略⼤⼩写。

通过/I 参数可以不区分要查找的字符串“abc”的⼤⼩写。

/N 显⽰⾏号。

例3find /n "abc" d:\abc.txt参数/n代表英语单词“Number”(号码).。

通过/n参数我们可以查找到字符串"abc"所在的⾏号。

/C 仅显⽰包含字符串的⾏数。

例4find /c "abc" d:\abc.txt参数/c是英语单词“Count”(计数)的缩写。

通过/c参数我们可以统计包含"abc"字符串的⾏数。

/V 显⽰所有未包含指定字符串的⾏。

例5find /v "abc" d:\abc.txt这个参数⽤于找出⽂件中不包含指定字符串的⾏。

在这⾥表⽰查找不包含"abc"字符串的⾏。

Const的用法大全

Const的用法大全

详解Const的用法Sunny.manConst限定符主要是声明变量为只读它的用法我归纳学习了一下,主要表现在以下几个方面。

1. 限定符声明变量只能被读const int i=3;//声明i为一个只读变量,但i不是常量,而且这个变量必须被初始化,i既然是变量而不是常量,就有办法修改这的值。

Const int n;//error C2734: ' n ' : const object must be initialized if not externint j=0;i=j;//error C3892: 'i' : you cannot assign to a variable that is const2. 在另一文件中引用const常量不可以再次附值extern const int i; //合法extern const int n=10; //非法,常量不可以被再次赋值3. 替代#define以便于用于类型检查用const方法可以使编译器对处理内容有更多了解。

#define I=10const long &i=10; //用&i主要是为了给i分配内存空间char h=I; //没有错char h=i; //编译警告,可能由于数的截短带来错误赋值。

4.由于const定义的是不可修改的变量,对应的一块内存地址,而不是象#define一样定义了常量,所以,const定义的不可改变的变量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。

#define STRING "abcdefghijklmn\n"const char string[]="abcdefghijklm\n";printf(STRING); //为STRING分配了第一次内存printf(string); //为string一次分配了内存,以后不再分配printf(STRING); //为STRING分配了第二次内存printf(string);5.修改const修饰的变量的值是可行的,尽管这样有违定义这个变量的初衷。

C++string.erase()用法详解

C++string.erase()用法详解

C++string.erase()⽤法详解标准库类型string表⽰可变长的字符序列。

可以通过string类的erase()函数来对该字符序列进⾏删除操作。

erase()函数共有3种格式,分别⽤来删除指定位置的字符、删除指定长度的字符串和删除指定范围的字符串。

1、string.erase(pos,n) //删除从pos开始的n个字符 string.erase(0,1); 删除第⼀个字符#include <string>#include <iostream>using namespace std;int main(){string::iterator i;string s;cin>>s;s.erase(1,2);cout<<s;return 0;}2、string.erase(pos) //删除pos处的⼀个字符(pos是string类型的迭代器)#include <string>#include <iostream>using namespace std;int main(){string::iterator i;string s;cin>>s;i = s.begin()+3;s.erase(i);cout<<s;return 0;}3、string.erase(first,last) //删除从first到last中间的字符(first和last都是string类型的迭代器)#include <string>#include <iostream>using namespace std;int main(){string::iterator i;string s;cin>>s;s.erase(s.begin()+1,s.end()-1);cout<<s;return 0;}到此这篇关于C++ string.erase()⽤法详解的⽂章就介绍到这了,更多相关C++ string.erase()⽤法内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

STL用法详解

STL用法详解

April07详细解说STL string(转载)详细解说STL string详细解说STL string0前言:string的角色1string使用1.1充分使用string操作符1.2眼花缭乱的string find函数1.3string insert,replace,erase2string和C风格字符串3string和Charactor Traits4string建议5小结6附录7参考文章0前言:string的角色C++语言是个十分优秀的语言,但优秀并不表示完美。

还是有许多人不愿意使用C或者C++,为什么?原因众多,其中之一就是C/C++的文本处理功能太麻烦,用起来很不方便。

以前没有接触过其他语言时,每当别人这么说,我总是不屑一顾,认为他们根本就没有领会C++的精华,或者不太懂C++,现在我接触perl,php,和Shell脚本以后,开始理解了以前为什么有人说C++文本处理不方便了。

举例来说,如果文本格式是:用户名电话号码,文件名name.txtTom23245332Jenny22231231Heny22183942Tom23245332...现在我们需要对用户名排序,且只输出不同的姓名。

那么在shell编程中,可以这样用:awk'{print$1}'name.txt|sort|uniq简单吧?如果使用C/C++就麻烦了,他需要做以下工作:先打开文件,检测文件是否打开,如果失败,则退出。

声明一个足够大得二维字符数组或者一个字符指针数组读入一行到字符空间然后分析一行的结构,找到空格,存入字符数组中。

关闭文件写一个排序函数,或者使用写一个比较函数,使用qsort排序遍历数组,比较是否有相同的,如果有,则要删除,copy...输出信息你可以用C++或者C语言去实现这个流程。

如果一个人的主要工作就是处理这种类似的文本(例如做apache的日志统计和分析),你说他会喜欢C/C++么?当然,有了STL,这些处理会得到很大的简化。

VC++ CString详解

VC++  CString详解

1、CString 对象的连接:用”+”2、格式化字符串:用CString 对象的Format()方法。

用这种方法的好处是你不用担心用来存放格式化后数据的缓冲区是否足够大,这些工作由CString类替你完成。

格式化是一种把其它不是字符串类型的数据转化为CString类型的最常用技巧。

*****CString s; s.Format(_T("%d"), total);我总是对我的字符串使用_T()宏,这是为了让我的代码至少有Unicode的意识#define _T(x) x // 非Unicode版本(non-Unicode version)而在Unicode环境下是如下定义的:#define _T(x) L##x // Unicode版本(Unicode version)所以在Unicode环境下,它的效果就相当于:s.Format(L"%d", total);如果你认为你的程序可能在Unicode的环境下运行,那么开始在意用Unicode 编码。

比如说,不要用sizeof() 操作符来获得字符串的长度,因为在Unicode环境下就会有2倍的误差。

我们可以用一些方法来隐藏Unicode的一些细节,比如在我需要获得字符长度的时候,我会用一个叫做DIM的宏,这个宏是在我的dim.h文件中定义的,我会在我写的所有程序中都包含这个文件:#define DIM(x) ( sizeof((x)) / sizeof((x)[0]) )这个宏不仅可以用来解决Unicode的字符串长度的问题,也可以用在编译时定义的表格上,它可以获得表格的项数,如下:class Whatever { ... };Whatever data[] = {{ ... },...{ ... },};for(int i = 0; i < DIM(data); i++) // 扫描表格寻找匹配项。

sscanf函数的用法详解

sscanf函数的用法详解

sscanf函数的用法详解sscanf 是一个在 C 语言中常用的函数,用于从字符串中读取格式化的输入。

这个函数在<stdio.h> 头文件中定义。

sscanf 的名字来源于 "string scan format",意为“字符串扫描格式”。

基本语法:c复制代码int sscanf(const char *str, const char*format, ...);str:要从中读取数据的字符串。

format:一个格式字符串,指定了要读取的数据的格式。

...:可变数量的参数,用于存储从字符串中读取的数据。

返回值:成功时,sscanf 返回成功读取的参数个数。

如果达到读取上限,或者遇到错误,它将返回一个比请求的参数个数小的值。

用法示例:c复制代码#include <stdio.h>int main() {char str[] = "123 456 789";int a, b, c;sscanf(str, "%d %d %d", &a, &b, &c);printf("a = %d, b = %d, c = %d\n", a, b, c); // 输出: a = 123, b = 456, c = 789return 0;}在上述示例中,sscanf 从字符串str 中读取了三个整数,并将它们存储在变量a, b, 和 c 中。

格式字符串"%d %d %d" 指定了要读取的数据类型和格式。

格式说明符:%d:读取一个十进制整数。

%f:读取一个浮点数。

%c:读取一个字符。

%s:读取一个字符串。

%u:读取一个无符号整数。

还有很多其他的格式说明符,可以根据需要使用。

详细的说明符列表可以在 C 标准文档中找到。

注意事项:确保提供的变量地址是有效的,以便sscanf 可以正确地将值存储在其中。

string,int用法

string,int用法

string,int用法
在编程中,"string"和"int"是两种常用的数据类型。

1. "string"表示字符串类型,用于存储文本和字符数据。

在大部分编程语言中,字符串通常用引号(单引号或双引号)括起来,如"Hello, World!"。

字符串可以进行拼接、比较、截取等操作。

例如:
```python
name = "John"
print("My name is " + name) # 输出:My name is John
```
2. "int"表示整数类型,用于存储整数数据。

整数可以是正数、负数或零。

整数可以进行基本的数学运算,如加减乘除、取余等操作。

例如: ```python
a = 5
b = 3
print(a + b) # 输出:8
```
需要注意的是,不同编程语言对于字符串和整数的具体用法可能有所不同,在具体编程的时候需要参考相应语言的语法和规则。

snprintf函数用法详解例子

snprintf函数用法详解例子

snprintf函数用法详解例子`snprintf`是一个常用的C语言函数,用于将格式化的数据写入到字符串中。

该函数位于``头文件中。

以下是`snprintf`函数的完整格式:```cint snprintf(char str, size_t size, const char format, ...);```其中:`str`:是目标字符串,将接收格式化数据。

`size`:指定目标字符串的最大长度。

如果`size`为0,则函数不会写入任何字符到`str`中。

如果`size`大于0,则函数将写入最多`size-1`个字符到`str`中,并在末尾添加一个空字符('\0')。

如果写入的数据超过`size-1`个字符,则只写入`size-1`个字符,并在末尾添加一个空字符('\0')。

`format`:是格式字符串,用于指定要写入的数据的格式。

`...`:是可变参数列表,包含要写入的数据。

下面是一个使用`snprintf`函数的示例:```cinclude <>int main() {char buffer[50];int a = 10;float b = ;char c = 'A';snprintf(buffer, sizeof(buffer), "整数:%d,浮点数:%f,字符:%c", a, b, c);printf("%s\n", buffer);return 0;}```在上面的示例中,我们首先声明一个大小为50的字符数组`buffer`,然后定义三个变量`a`、`b`和`c`。

接下来,我们使用`snprintf`函数将格式化的数据写入到`buffer`中。

在格式字符串中,我们使用占位符指定要写入的变量类型和名称。

最后,我们使用`printf`函数将结果输出到控制台。

输出结果为:```csharp整数:10,浮点数:,字符:A ```。

strncmp函数的用法

strncmp函数的用法

strncmp函数的用法strncmp函数是C语言中一个非常有用的字符串比较函数。

它的作用是比较两个字符串的前n个字符是否相同。

以下是该函数的用法详解。

函数原型:int strncmp(const char* str1, const char* str2, size_t n);参数解释:1. str1:第一个字符串。

2. str2:第二个字符串。

3. n:要比较的字符个数。

返回值:如果前n个字符相同,返回0;如果不同,返回差值。

使用示例:下面是一个例子,演示如何使用strncmp函数进行字符串比较。

```c#include <stdio.h>#include <string.h>int main() {char str1[20] = "good";char str2[20] = "goose";int compare;compare = strncmp(str1, str2, 3); if(compare == 0) {printf("前3个字符相同\n");}else {printf("前3个字符不同\n");}return 0;}```运行结果:```c前3个字符相同```通过以上例子,我们可以看到,在进行strncmp函数比较时,如果字符串前三个字符相同,我们将得到一个返回值为0的结果。

如果要比较整个字符串,只需要将n设置为两个字符串中较短字符串的长度即可。

总结:在C语言中,strncmp函数是字符串比较中相当重要的一个函数,它非常容易使用,且具有高效性和灵活性。

可以使用这个函数来判断两个字符串是否相同,从而确定程序的执行。

在今后的程序中,这个函数将会经常使用。

c中tostring的用法

c中tostring的用法

c中tostring的用法c中tostring的用法的用法你知道吗?下面小编就跟你们详细介绍下c中tostring的用法的用法,希望对你们有用。

c中tostring的用法的用法如下:C货币2.5.ToString("C")¥2.50D十进制数25.ToString("D5")00025E科学型25000.ToString("E")2.500000E+005F固定点25.ToString("F2")25.00G常规2.5.ToString("G")2.5数字2500000.ToString("N")2,500,000.00X十六进制255.ToString("X")FFformatCode 是可选的格式化代码字符串。

(详细内容请搜索"格式化字符串"查看)必须用"{"和"}"将格式与其他字符分开。

如果恰好在格式中也要使用大括号,可以用连续的两个大括号表示一个大括号,即:"{{"或者"}}"。

常用格式举例:(1) int i=12345;this.textBox1.Text=i.ToString();//结果 12345(this指当前对象,或叫当前类的实例)this.textBox2.Text=i.ToString("d8");//结果 00012345(2) int i=123;double j=123.45;string s1=string.Format("the value is {0,7:d}",i);string s2=string.Format("the value is {0,7:f3}",j);this.textBox1.Text=s1 ;//结果 the value is 123this.textBox2.Text=s2;//结果 the value is 123.450(3)double i=12345.6789;this.textBox1.Text=i.ToString("f2"); //结果 12345.68this.textBox2.Text=i.ToString("f6");//结果 12345.678900(4)double i=12345.6789;this.textBox1.Text=i.ToString("n"); //结果 12,345.68this.textBox2.Text=i.ToString("n4"); //结果 12,345.6789(5)double i=0.126;string s=string.Format("the value is {0:p}",i);this.textBox1.Text=i.ToString("p"); //结果 12.6%this.textBox2.Text=s; //结果 the value is 12.6%(6) DateTime dt =new DateTime(2003,5,25);this.textBox1.Text=dt.ToString("yy.M.d");//结果 03.5.25this.textBox2.Text=dt.ToString("yyyy年M月");//结果 2003年5月Convert.T oDateTime("2005/12/2222:22:22").ToString("yyyy/MM/dd HH:mm:ss")"2005/12/22 22:22:22"(7) int i=123;double j=123.45;string s=string.Format("i:{0,-7},j:{1,7}",i,j);//-7表示左对齐,占7位this.textBox1.Text=s ;//结果i:123 ,j: 123.45DateTime.ToString()用法详解我们经常会遇到对时间进行转换,达到不同的显示效果,默认格式为:2006-6-6 14:33:34如果要换成成200606,06-2006,2006-6-6或更多的格式该怎么办呢?这里将要用到:DateTime.T oString的方法(String, IFormatProvider)示例:using System;using System.Globalization;String format="D";DateTime date=DataTime.Now;Response.Write(date.ToString(format, DateTimeFormatInfo.InvariantInfo));结果输出Thursday, June 16, 2006在这里列出了参数format格式详细用法=======================格式字符关联属性/说明d ShortDatePatternD LongDatePatternf 完整日期和时间(长日期和短时间)F FullDateTimePattern(长日期和长时间)g 常规(短日期和短时间)G 常规(短日期和长时间)m、M MonthDayPatternr、R RFC1123Patterns 使用当地时间的 SortableDateTimePattern(基于 ISO 8601)t ShortTimePatternT LongTimePatternu UniversalSortableDateTimePattern 用于显示通用时间的格式U 使用通用时间的完整日期和时间(长日期和长时间)y、Y YearMonthPattern下表列出了可被合并以构造自定义模式的模式====================================== ==这些模式是区分大小写的;例如,识别"MM",但不识别"mm"。

C语言中strtod()函数的用法详解

C语言中strtod()函数的用法详解

C语⾔中strtod()函数的⽤法详解函数原型:#include <stdlib.h>double strtod(const char *nptr, char **endptr);C语⾔及C++中的重要函数。

名称含义 strtod(将字符串转换成) atoi,atol,strtod,strtol,strtoul 函数说明 strtod()会扫描参数nptr字符串,跳过前⾯的空格字符,直到遇上数字或正负符号才开始做转换,到出现⾮数字或字符串结束时('\0')才结束转换,并将结果返回。

若endptr不为NULL,则会将遇到不合条件⽽终⽌的nptr中的字符指针由endptr传回。

参数nptr字符串可包含正负号、或E(e)来表⽰指数部分。

如123.456或123e-2。

返回值 返回转换后的数。

附加说明 参考atof()。

范例#include<stdlib.h>#include<stdio.h>void main(){char *endptr;char a[] = "12345.6789";char b[] = "1234.567qwer";char c[] = "-232.23e4";printf( "a=%lf\n", strtod(a,NULL) );printf( "b=%lf\n", strtod(b,&endptr) );printf( "endptr=%s\n", endptr );printf( "c=%lf\n", strtod(c,NULL) );}执⾏结果:a=12345.678900b=1234.567000endptr=qwerc=-2322300.000000补充说明:附类同的atof函数,atof函数是需要确定a是数字类型的字符串;-------atof1. 函数名: atof功能:把字符串转换成浮点数名字来源:ascii to floating point numbers 的缩写⽤法: double atof(const char *nptr);中⽂名atof()外⽂名ascii to floating point numbers释义. 函数名功能把字符串转换成浮点数:#include<stdlib.h>#include<stdio.h>int main(){double d;char str[] = "123.456";d=atof(str);printf("string=%sdouble=%lf\n",str,d);return0;}2. atof(将字串转换成数)相关函数,,,,表头⽂件 #include <stdlib.h>定义函数 double atof(const char *nptr);函数说明 atof()会扫描参数nptr串,跳过前⾯的空格字符,直到遇上数字或正负符号才开始做转换,⽽再遇到⾮数字或字符串结束时('\0')才结束转换,并将结果返回。

xargs原理及用法详解

xargs原理及用法详解

xargs原理及⽤法详解管道实现的是将前⾯的stdout作为后⾯的stdin,但是有些命令不接受管道的传递⽅式,最常见的就是ls命令。

有些时候命令希望管道传递的是参数,但是直接⽤管道有时⽆法传递到命令的参数位,这时候需要xargs,xargs实现的是将管道传输过来的stdin进⾏处理然后传递到命令的参数位上。

也就是说xargs完成了两个⾏为:处理管道传输过来的stdin;将处理后的传递到正确的位置上。

可以试试运⾏下⾯的⼏条命令,应该能很好理解xargs的作⽤了:[root@node2 scprits]# echo"/etc/inittab" | cat/etc/inittab[root@node2 scprits]# echo"/etc/inittab" | xargs cat# inittab is no longer used when using systemd.## ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.## Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target## systemd uses 'targets' instead of runlevels. By default, there are two main targets:## multi-user.target: analogous to runlevel 3# graphical.target: analogous to runlevel 5## To view current default target, run:# systemctl get-default## To set a default target, run:# systemctl set-default TARGET.target#xargs的作⽤不仅仅限于简单的stdin传递到命令的参数位,它还可以将stdin或者⽂件stdin分割成批,每个批中有很多分割⽚段,然后将这些⽚段按批交给xargs后⾯的命令进⾏处理。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++ String 用法详解 收藏 任何人对本文进行引用都要标明作者是 Nicolai M.Josuttis /////////////////////////////////////////////////////////////////////////////////// C++ 语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使用 C 或者 C++,为什么?原因众多, 其中之一就是 C/C++的文本处理功能太麻烦,用起来很不方便。以前没有接触过其他语言时,每当别人这么说,我 总是不屑一顾,认为他们根本就没有领会 C++的精华,或者不太懂 C++,现在我接触 perl, php, 和 Shell 脚本以后, 开始理解了以前为什么有人说 C++文本处理不方便了。 举例来说,如果文本格式是:用户名 电话号码,文件名 name.txt Tom 23245332 Jenny 22231231 Heny 22183942 Tom 23245332 „ 现在我们需要对用户名排序,且只输出不同的姓名。 那么在 shell 编程中,可以这样用: awk '{print $1}' name.txt | sort | uniq 简单吧? 如果使用 C/C++ 就麻烦了,他需要做以下工作: 先打开文件,检测文件是否打开,如果失败,则退出。 声明一个足够大得二维字符数组或者一个字符指针数组 读入一行到字符空间 然后分析一行的结构,找到空格,存入字符数组中。 关闭文件 写一个排序函数,或者使用写一个比较函数,使用 sort()排序 遍历数组,比较是否有相同的,如果有,则要删除,copy„ 输出信息 你可以用 C++或者 C 语言去实现这个流程。如果一个人的主要工作就是处理这种类似的文本(例如做 apache 的日志 统计和分析),你说他会喜欢 C/C++么? 当然,有了 STL,这些处理会得到很大的简化。我们可以使用 fstream 来代替麻烦的 fopen fread fclose, 用 vector 来 代替数组。最重要的是用 string 来代替 char * 数组,使用 sort 排序算法来排序,用 unique 函数来去重。听起来好 像很不错。看看下面代码(例程 1) : view plaincopy to clipboardprint? #include <string> #include <iostream> #include <algorithm> #include <vector> #include <fstream> using namespace std; int main()
有了这些操作符,在 STL 中仿函数都可以直接使用 string 作为参数,例如 less, great, equal_to 等,因此在把 string 作为参数传递的时候,它的使用和 int 或者 float 等已经没有什么区别了。例如,你可以使用: map<string, int> mymap; //以上默认使用了 less<string> 有了 operator + 以后,你可以直接连加,例如: string strinfo="Winter"; string strlast="Hello " + strinfo + "!"; string strtest="Hello " + strinfo + " Welcome" + " to China" + " !";//你还可以这样: 看见其中的特点了吗?只要你的ቤተ መጻሕፍቲ ባይዱ式里面有一个 string 对象,你就可以一直连续”+” ,但有一点需要保证的是,在 开始的两项中,必须有一项是 string 对象。其原理很简单: 系统遇到”+”号,发现有一项是 string 对象。 系统把另一项转化为一个临时 string 对象。 执行 operator + 操作,返回新的临时 string 对象。 如果又发现”+”号,继续第一步操作。
int main() { string strinfo="Please input your name:"; cout << strinfo ; cin >> strinfo; if( strinfo == "winter" ) cout << "you are winter!"<<endl; else if( strinfo != "wende" ) cout << "you are not wende!"<<endl; else if( strinfo < "winter") cout << "your name should be ahead of winter"<<endl; else cout << "your name should be after of winter"<<endl; strinfo += " , Welcome to China!"; cout << strinfo<<endl; cout <<"Your name is :"<<strinfo<<endl; string strtmp = "How are you? " + strinfo; for(int i = 0 ; i < strtmp.size(); i ++) cout<<strtmp[i]; return 0; } 下面是程序的输出
其实, string 并不是一个单独的容器, 只是 basic_string 模板类的一个 typedef 而已, 相对应的还有 wstring, 你在 string 头文件中你会发现下面的代码: extern "C++" { typedef basic_string <char> string; typedef basic_string <wchar_t> wstring; } // extern "C++" 由于只是解释 string 的用法,如果没有特殊的说明,本文并不区分 string 和 basic_string 的区别。 string 其实相当于一个保存字符的序列容器,因此除了有字符串的一些常用操作以外,还有包含了所有的序列容器 的操作。字符串的常用操作包括:增加、删除、修改、查找比较、链接、输入、输出等。详细函数列表参看附录。 不要害怕这么多函数,其实有许多是序列容器带有的,平时不一定用的上。 如果你要想了解所有函数的详细用法,你需要查看 basic_string,或者下载 STL 编程手册。这里通过实例介绍一些常 用函数。 1.1 充分使用 string 操作符 string 重载了许多操作符,包括 +, +=, <, =, , [], <<, >>等,正式这些操作符,对字符串操作非常方便。先看看下面这 个例子: view plaincopy to clipboardprint? #include <string> #include <iostream> using namespace std; int main() { string strinfo="Please input your name:"; cout << strinfo ; cin >> strinfo; if( strinfo == "winter" ) cout << "you are winter!"<<endl; else if( strinfo != "wende" ) cout << "you are not wende!"<<endl; else if( strinfo < "winter") cout << "your name should be ahead of winter"<<endl; else cout << "your name should be after of winter"<<endl; strinfo += " , Welcome to China!"; cout << strinfo<<endl; cout <<"Your name is :"<<strinfo<<endl; string strtmp = "How are you? " + strinfo; for(int i = 0 ; i < strtmp.size(); i ++) cout<<strtmp[i]; return 0; } #include <string> #include <iostream> using namespace std;
由于这个等式是由左到右开始检测执行,如果开始两项都是 const char* ,程序自己并没有定义两个 const char* 的 加法,编译的时候肯定就有问题了。 有了操作符以后,assign(), append(), compare(), at()等函数,除非有一些特殊的需求时,一般是用不上。当然 at()函 数还有一个功能,那就是检查下标是否合法,如果是使用: string str="winter";// 下面一行有可能会引起程序中断错误 str[100]='!';// 下面会抛出异常 :throws: out_of_range cout<<str.at(100)<<endl; 了解了吗?如果你希望效率高,还是使用[]来访问,如果你希望稳定性好,最好使用 at()来访问。 1.2 眼花缭乱的 string find 函数 由于查找是使用最为频繁的功能之一,string 提供了非常丰富的查找函数。其列表如下: 函 数 名 描 述 find 查 找 rfind 反 向 查 找 find_first_of 查 找 包 含 子 串 中 的 任 何 字 符 , 返 回 第 一 个 位 置 find_first_not_of 查找不包含子串中的任何字符,返回第一个位置 find_last_of 查找包含子串中的任何字符,返回最 后一个位置 find_last_not_of 查找不包含子串中的任何字符,返回最后一个位置以上函数都是被重载了 4 次,以下 是以 find_first_of 函数为例说明他们的参数,其他函数和其参数一样,也就是说总共有 24 个函数 : size_type find_first_of(const basic_string& s, size_type pos = 0) size_type find_first_of(const charT* s, size_type pos, size_type n) size_type find_first_of(const charT* s, size_type pos = 0) size_type find_first_of(charT c, size_type pos = 0) 所有的查找函数都返回一个 size_type 类型,这个返回值一般都是所找到字符串的位置,如果没有找到,则返回 string::npos。 有一点需要特别注意, 所有和 string::npos 的比较一定要用 string::size_type 来使用, 不要直接使用 int 或 者 unsigned int 等类型。其实 string::npos 表示的是-1, 看看头文件: template <class _CharT, class _Traits, class _Alloc> const basic_string<_CharT,_Traits,_Alloc>::size_type basic_string<_CharT,_Traits,_Alloc>::npos = basic_string<_CharT,_Traits,_Alloc>::size_type) -1; find 和 rfind 都还比较容易理解, 一个是正向匹配, 一个是逆向匹配, 后面的参数 pos 都是用来指定起始查找位置。 对于 find_first_of 和 find_last_of 就不是那么好理解。 find_first_of 是给定一个要查找的字符集,找到这个字符集中任何一个字符所在字符串中第一个位置。或许看一个 例子更容易明白。 有这样一个需求:过滤一行开头和结尾的所有非英文字符。看看用 string 如何实现: #include <string> #include <iostream> using namespace std; int main() { string strinfo=" //*---Hello Word!......------";
相关文档
最新文档