string基本

使用std::cin读取string,自动从第一个非空白字符开始,直到遇到空白字符结束

#include <iostream>
#include <string>

int main()
{
    std::string str ;
    std::cin>>str;
    std::cout<<"------------------"<<std::endl;
    std::cout<<str;
    return 0;
}

 

输入的是 "      C++是世界上最棒的语言       "

 

循环读取数量不定的string(还是会忽略掉开始和结束的空白)

#include <iostream>
#include <string>

int main()
{
    std::string word ;
    while(std::cin>>word)
        std::cout<<"word= "<<word<<std::endl;
    return 0;
}

 

 

使用getline读取string(不会忽略开始和结束的空白,从行首一直读取到换行符,包括换行符,但是不把换行符拷贝到string,

实际上读取了换行符,但是丢弃了。如果第一个字符就是换行符,则string为空)

 

#include <iostream>
#include <string>

int main()
{
    std::string line ;
    while(getline(std::cin,line))
        std::cout<<line<<std::endl;

    return 0;
}

 

 

改进,使用empty()方法,过滤掉空string

#include <iostream>
#include <string>

int main()
{
    std::string line ;
    while(getline(std::cin,line))
        if(!line.empty())
            std::cout<<line<<std::endl;

    return 0;
}

 

改进,只输出大于3个字符的string

#include <iostream>
#include <string>

int main()
{
    std::string line ;
    while(getline(std::cin,line))
        if(line.size()>3)
            std::cout<<line<<std::endl;

    return 0;
}

 

size()方法,一个中文占两个

#include <iostream>
#include <string>

int main()
{
    std::string s1 = "C++" ;
    std::string s2 = "最好的语言";

    std::cout<<s1.size()<<std::endl;
    std::cout<<s2.size()<<std::endl;

    return 0;
}

 

注意:size()返回的不是int而是string::size_type类型,只需记住,它是一个无符号类型,用于比较时很重要

(例如和一个很小的负数n比较时,n会转化为一个很大的无符号数)

#include <iostream>
#include <string>

int main()
{
    std::string s1 = "C++是中国的" ;

    int n = -1 ;
    if(s1.size()<n)
        std::cout<<"耐人寻味"<<std::endl;

    return 0;
}

快速构建相同字符的string

#include <iostream>
#include <string>

int main()
{
    std::string s1(10,'C');

    std::cout<<s1<<std::endl;

    return 0;
}

 

拼接string(确保每个+左右至少有一个string)

由于历史原因,为了兼容C,C++中字符串字面值和string不相同

#include <iostream>
#include <string>

int main()
{
    std::string s1 = "C++";

    std::cout<<s1+""+"世界上最完美的语言";
    //std::cout<<"世界上最完美的语言"+"是"+s1; //错误

    return 0;
}

 

 

posted @ 2016-11-29 16:18  郭志凯  阅读(347)  评论(0编辑  收藏  举报