高手请进,关于string类。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高手请进,关于string类。相关的知识,希望对你有一定的参考价值。

谁能告诉我c++中string类里有那些成员函数和成员变量,以及他们的作用。
vc++6.0版。
有高分送!!!

不要贴地址!!!

string类的构造函数:
string(const char *s); //用c字符串s初始化
string(int n,char c); //用n个字符c初始化
此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常

string类的字符操作:
const char &operator[](int n)const;
const char &at(int n)const;
char &operator[](int n);
char &at(int n);
operator[]和at()均返回当前字符串中第n个字符的位置,但at函数提供范围检查,当越界时会抛出out_of_range异常,下标运算符[]不提供检查访问。
const char *data()const;//返回一个非null终止的c字符数组
const char *c_str()const;//返回一个以null终止的c字符串

string的特性描述:
int capacity()const; //返回当前容量(即string中不必增加内存即可存放的元素个数)
int max_size()const; //返回string对象中可存放的最大字符串的长度
int size()const; //返回当前字符串的大小
int length()const; //返回当前字符串的长度
bool empty()const; //当前字符串是否为空
void resize(int len,char c);//把字符串当前大小置为len,并用字符c填充不足的部分

string类的输入输出操作:
string类重载运算符operator>>用于输入,同样重载运算符operator<<用于输出操作。
函数getline(istream &in,string &s);用于从输入流in中读取字符串到s中,以换行符'\n'分开。

string的赋值:
string &operator=(const string &s);//把字符串s赋给当前字符串
string &assign(const char *s);//用c类型字符串s赋值
string &assign(const char *s,int n);//用c字符串s开始的n个字符赋值
string &assign(const string &s);//把字符串s赋给当前字符串
string &assign(int n,char c);//用n个字符c赋值给当前字符串
string &assign(const string &s,int start,int n);//把字符串s中从start开始的n个字符赋给当前字符串
string &assign(const_iterator first,const_itertor last);//把first和last迭代器之间的部分赋给字符串

string的连接:
string &operator+=(const string &s);//把字符串s连接到当前字符串的结尾
string &append(const char *s); //把c类型字符串s连接到当前字符串结尾
string &append(const char *s,int n);//把c类型字符串s的前n个字符连接到当前字符串结尾
string &append(const string &s); //同operator+=()
string &append(const string &s,int pos,int n);//把字符串s中从pos开始的n个字符连接到当前字符串的结尾
string &append(int n,char c); //在当前字符串结尾添加n个字符c
string &append(const_iterator first,const_iterator last);//把迭代器first和last之间的部分连接到当前字符串的结尾

string的比较:
bool operator==(const string &s1,const string &s2)const;//比较两个字符串是否相等
运算符">","<",">=","<=","!="均被重载用于字符串的比较;
int compare(const string &s) const;//比较当前字符串和s的大小
int compare(int pos, int n,const string &s)const;//比较当前字符串从pos开始的n个字符组成的字符串与s的大小
int compare(int pos, int n,const string &s,int pos2,int n2)const;//比较当前字符串从pos开始的n个字符组成的字符串与s中pos2开始的n2个字符组成的字符串的大小
int compare(const char *s) const;
int compare(int pos, int n,const char *s) const;
int compare(int pos, int n,const char *s, int pos2) const;
compare函数在>时返回1,<时返回-1,==时返回0

string的字串:
string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串

string的交换:
void swap(string &s2); //交换当前字符串与s2的值
参考技术A 部分方法:
Compare(String s1,String s2) 静态方法
功能:区分大小写比较。

Compare(String s1,String s2,Bool ignoreCase) 静态方法
功能:ignoreCase为True,不区分大小写比较。

CompareTo(String s) 实例方法
功能:对给定字符串与实例字符串执行一次区分大小写与文化信息比较。

Copy(String s) 静态方法
功能:返回一个与给定字符串同值的新的字符串。

CopyTo(Int surceIndex,char[ ] destination,Int destIndex,Int count)
实例方法功能:此实例中的指定位置复制到 Unicode 字符数组中的指定位置。
参数:
sourceIndex:此实例中的字符位置。
destination :Unicode 字符的数组。
destIndex :destination 中的数组元素。
count:此实例中要复制到 destination 的字符数。
例程:
using System;
public class CopyToTest
public static void Main()
string strSource = "changed";
char [] destination = 'T', 'h', 'e', ' ', 'i', 'n', 'i', 't', 'i', 'a', 'l', ' ', 'a', 'r', 'r', 'a', 'y' ;
Console.WriteLine( destination );
strSource.CopyTo ( 0, destination, 4, strSource.Length );
Console.WriteLine( destination );
strSource = "A different string";
strSource.CopyTo ( 2, destination, 3, 9 );
Console.WriteLine( destination );

输出:
The initial array
The changed array
Thedifferentarray

EndsWith(String s)
功能:如果实例字符串是以给定的字符串结束,就返回True。

Equals(String s)
功能:如果实例字符串与给定的对象具有相同的值,就返回True。

Format(IFormatProvider provider,String format,ParamArray args)
功能:format 的一个副本,其中格式项已替换为 args 中相应 Object 实例的 String 等效项。
参数
provider : 一个 IFormatProvider,它提供区域性特定的格式设置信息。
format : 包含零个或多个格式项。
args :包含零个或多个要格式化的对象的 Object 数组。
例如:
string myName = "Fred";
String.Format("Name = 0, hours = 1:hh", myName, DateTime.Now);
固定文本是“Name =”和“, hours =”,格式项是“0”和“1:hh”,值为 myName 和 DateTime.Now。

Replace(String oldstring,String newstring)
功能:在实例字符串中用newstring替换所有oldstring。

Split(char[] separator,int count)
参数
separator :分隔此实例中子字符串的 Unicode 字符数组、不包含分隔符的空数组或空引用。
count :要返回的最大数组元素数。
例如:
string delimStr = " ,.:";
char [] delimiter = delimStr.ToCharArray();
string words = "one two,three:four.";
string [] split = null;
split = words.Split(delimiter, 4);
foreach (string s in split)

Console.WriteLine("-0-", s);

one <==输出
two
three
four.

SubString(Int startPos,Int length)
功能:从指定位置开始返回一个指定长度的子串。

ToString( ) 功能:返回一个对实例字符的引用。

ToString(IFormatProvider format)
功能:返回一个对实例字符串的引用。
参考技术B 这个东西根本不是在这里面能写完的,如果你想学VC++的话,我建议还是自己装一个MSDN吧,这个是VC++的帮助文件,上面的东西很全,包括你现在想问的。 参考技术C string类的构造函数:
string(const
char
*s);
//用c字符串s初始化
string(int
n,char
c);
//用n个字符c初始化
此外,string类还支持默认构造函数和复制构造函数,如string
s1;string
s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常
string类的字符操作:
const
char
&operator[](int
n)const;
const
char
&at(int
n)const;
char
&operator[](int
n);
char
&at(int
n);
operator[]和at()均返回当前字符串中第n个字符的位置,但at函数提供范围检查,当越界时会抛出out_of_range异常,下标运算符[]不提供检查访问。
const
char
*data()const;//返回一个非null终止的c字符数组
const
char
*c_str()const;//返回一个以null终止的c字符串
string的特性描述:
int
capacity()const;
//返回当前容量(即string中不必增加内存即可存放的元素个数)
int
max_size()const;
//返回string对象中可存放的最大字符串的长度
int
size()const;
//返回当前字符串的大小
int
length()const;
//返回当前字符串的长度
bool
empty()const;
//当前字符串是否为空
void
resize(int
len,char
c);//把字符串当前大小置为len,并用字符c填充不足的部分
string类的输入输出操作:
string类重载运算符operator>>用于输入,同样重载运算符operator<<用于输出操作。
函数getline(istream
&in,string
&s);用于从输入流in中读取字符串到s中,以换行符'\n'分开。
string的赋值:
string
&operator=(const
string
&s);//把字符串s赋给当前字符串
string
&assign(const
char
*s);//用c类型字符串s赋值
string
&assign(const
char
*s,int
n);//用c字符串s开始的n个字符赋值
string
&assign(const
string
&s);//把字符串s赋给当前字符串
string
&assign(int
n,char
c);//用n个字符c赋值给当前字符串
string
&assign(const
string
&s,int
start,int
n);//把字符串s中从start开始的n个字符赋给当前字符串
string
&assign(const_iterator
first,const_itertor
last);//把first和last迭代器之间的部分赋给字符串
string的连接:
string
&operator+=(const
string
&s);//把字符串s连接到当前字符串的结尾
string
&append(const
char
*s);
//把c类型字符串s连接到当前字符串结尾
string
&append(const
char
*s,int
n);//把c类型字符串s的前n个字符连接到当前字符串结尾
string
&append(const
string
&s);
//同operator+=()
string
&append(const
string
&s,int
pos,int
n);//把字符串s中从pos开始的n个字符连接到当前字符串的结尾
string
&append(int
n,char
c);
//在当前字符串结尾添加n个字符c
string
&append(const_iterator
first,const_iterator
last);//把迭代器first和last之间的部分连接到当前字符串的结尾
string的比较:
bool
operator==(const
string
&s1,const
string
&s2)const;//比较两个字符串是否相等
运算符">","<",">=","<=","!="均被重载用于字符串的比较;
int
compare(const
string
&s)
const;//比较当前字符串和s的大小
int
compare(int
pos,
int
n,const
string
&s)const;//比较当前字符串从pos开始的n个字符组成的字符串与s的大小
int
compare(int
pos,
int
n,const
string
&s,int
pos2,int
n2)const;//比较当前字符串从pos开始的n个字符组成的字符串与s中pos2开始的n2个字符组成的字符串的大小
int
compare(const
char
*s)
const;
int
compare(int
pos,
int
n,const
char
*s)
const;
int
compare(int
pos,
int
n,const
char
*s,
int
pos2)
const;
compare函数在>时返回1,<时返回-1,==时返回0
string的字串:
string
substr(int
pos
=
0,int
n
=
npos)
const;//返回pos开始的n个字符组成的字符串
string的交换:
void
swap(string
&s2);
//交换当前字符串与s2的值

Linux高手请进,关于编译hello模块的问题

hello.c代码如下:
——————————————————
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/module.h>

MODULE_LICENSE("GPL");

static int hello_init(void)

printk(KERN_ALERT “Hello, kernel!\n”);
return 0;

static void hello_exit(void)

printk(KERN_ALERT “Good-bye, kernel!\n”);


module_init(hello_init);
module_exit(hello_exit);

Makefile代码如下:
————————————————————
TARGET = hello
KDIR = ~/linux-2.6.28
PWD = $(shell)
obj-m := $(TARGET).o
default:
make -C $(KDIR) M=$(PWD) modules

所用的内核为linux-2.6.28,已经成功编译过了,当我在hello.c所在的目录下运行make时,会出现如下提示:
————————————————————————————
zouxf@ubuntu:~/linux-2.6.28/hello$ make
make -C ~/linux-2.6.28 M= modules
make[1]: 正在进入目录 `/home/zouxf/linux-2.6.28'
CHK include/linux/version.h
CHK include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-x86
CALL scripts/checksyscalls.sh
Building modules, stage 2.
MODPOST 2277 modules
make[1]:正在离开目录 `/home/zouxf/linux-2.6.28'
zouxf@ubuntu:~/linux-2.6.28/hello$
————————————————————————————————
编译过程没有错误提示,可是不知道为什么不会生成所需要的hello.ko文件,请linux高手指教,谢谢!!

内核源码树建了吗,你所使用的内核要和你所启动的内核版本要一致。 参考技术A 没错。

以上是关于高手请进,关于string类。的主要内容,如果未能解决你的问题,请参考以下文章

List<Map<String, Object>> jbxx,jbxx怎么遍历取值啊,高手请进,在线等,回答详细一点哦。最好直接上代码

java高手请进 我用的数据类型为Date,查找出来没得小时分钟秒,怎么办,有谁能解决,不能用String的哦!

高手请进!如何把整形数据转换为字符串(C语言)?

高分悬赏,c语言高手请进

高手请进,关于server2003的问题yxftg

高手请进。关于CLASS文件。。。