C++库函数使用


string rdBuffer ;

string wrBuffer ;

            rdBuffer.clear();

          //string被清空

            wrBuffer.clear();

            wrBuffer.append(strSymbol);

          //在string 后端加上strSymbol这个string

            wrBuffer.append("\"Hello, I am zchx client, do u hear me?\"");

            rdBuffer.find("PASSWORD")!=string::npos) ;

       //查找string,返回指针,不能不写,不写寻找错误。

           rdBuffer.size() > 0

                     memset(aa,' ',sizeof(aa));

                    memcpy(aa,tcp_client::wrBuffer.data(),tcp_client::wrBuffer.size());

数组字符串的赋值 如 : aa[1024] ,以后的赋值使用strcpy

 例如:

 char str[40];
 strcpy(str,"aldkjflakdsjfalkfj");   //第二个参数实际是一个指针

关于string转到char的过程如下示例

    有时要出现const的问题,直接加及OK

    string str;
    char *a;
    a=str.c_str();


        const char *ipbuffer;
    ipbuffer=ipaddress.c_str();     //ipbuffer 是string
    strcpy(statebuffer.ipaddress,ipbuffer);  //ipaddress 是char
    strcpy(statebuffer.NETState,"Connected");

void StringToChar(char *buffer1,string buffer2,uchar size)
{
const char *stingbuffer=buffer2.c_str() ;
memset(buffer1,0,size);
strcpy(buffer1,stingbuffer);
}

char 的数组 到string的最快方法:

char kk[55] ;

string mm =  kk;

String与int

要实现这个目标,非stringstream类莫属。这个类在<sstream>头文件中定义,<sstream>库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。

string到int类型的转换

<sstream>使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使使用了不正确的格式化符也没有危险。

std::stringstream stream;

string result="10000";
int n = 0;
stream << result;
stream >> n;//n等于10000

int到string类型的转换

string result;
int n = 12345;
stream << n;
result =stream.str();// result等于"12345"

重复利用stringstream对象

如果你打算在多次转换中使用同一个stringstream对象,记住再每次转换前要使用clear()方法,在多次转换中重复使用同一个stringstream(而不是每次都创建一个新的对象)对象最大的好处在于效率。stringstream对象的构造和析构函数通常是非常耗费CPU时间的。经试验,单单使用clear()并不能清除stringstream对象的内容,仅仅是了该对象的状态,要重复使用同一个stringstream对象,需要使用str()重新初始化该对象。

示例2:

while (std::cin>>i)

 {

  temp.push_back(i);

  if (temp.size()>1)

  {

    std::vector<int>::size_type y=temp.size();

    stream<<y;

    std::cout<<"size:"+stream.str()<<std::endl;

    stream.clear();

    stream.str("");

  }

}

转换中使用模板

 也可以轻松地定义函数模板来将一个任意的类型转换到特定的目标类型。例如,需要将各种数字值,如int、long、double等等转换成字符串,要使用以一个string类型和一个任意值t为参数的to_string()函数。to_string()函数将t转换为字符串并写入result中。使用str()成员函数来获取流内部缓冲的一份拷贝:

示例3:

template<class T>

void to_string(string & result,const T& t)

{

 ostringstream oss;//创建一个流

oss<<t;//把值传递如流中

result=oss.str();//获取转换后的字符转并将其写入result
}

这样,你就和衣轻松地将多种数值转换成字符串了:

to_string(s1,10.5);//double到string

to_string(s2,123);//int到string

to_string(s3,true);//bool到string



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值