sstream头文件-getline 函数 和 stringstream函数 和string的常见用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sstream头文件-getline 函数 和 stringstream函数 和string的常见用法相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main()
{
    string line;
    while(getline(cin,line)
    {
        int sum = 0, x;
        stringstream ss(line);
        while(ss>>x)
        {
            sum += x;
        }
        cout << sum << endl;
    }
    return 0;
}

//getline函数可以读入一行的字符,不论有没有空格,第一个参数,流 ,第二个参数 ,将流读入的地方,第三个参数,当读到某个字符的时候停止; stringstream函数是C++提供的另一个字串型的串流(stream)物件,和之前学过的 iostream、fstream 有类似的操作方式

stringstream stringstream是字符串流,经常被我用来作数据切分或者类型转化; 主要是用在將一個字串分割,可以先用 clear( )以及 str( ) 將指定字串設定成一开始的內容,再用 >> 把个別的资料输出,例如:

string s;
stringstream ss;
int a, b, c;
getline(cin, s);
ss.clear();
ss.str(s);
ss >> a >> b >> c;

 



也可以在使用之前直接进行初始化
getline(cin , line);
stringstream ss(line);

补充:string的某些用法; string常用的方法是find和substr; string str = "aaaaddddssdfsasdf"; size_t pos = str.find("ssdf", 3); string str2 = str.substr(pos, 5); find函数从str的第3个位置查起,找到ssdf这个子串后,返回子串的位置。而substr函数从pos位置开始,截取5个字符,赋值给str2。也就是说,str2之后的内容将是ssdfs

类型转化: string到int的转换 stringstream stream; string result=”10000”; int n=0; stream << result; stream >> n;//n等于10000

类型转化:int 到 string 的转化

#include <string>
#include <sstream>
#include <iostream> 

int main()
{
    std::stringstream stream;
    std::string result;
    int i = 1000;
    stream << i; //将int输入流
    stream >> result; //从stream中抽取前面插入的int值
    std::cout << result << std::endl; // print the string "1000"
}

 

当进行多次类型转化的时候,需要用到clear函数;将stringstream中的清空;

以上是关于sstream头文件-getline 函数 和 stringstream函数 和string的常见用法的主要内容,如果未能解决你的问题,请参考以下文章

用getline分割字符串

HDU 2072 单词数

关于函数getline()(简单注意事项,不懂你怼我!!!)

getlineget和put函数

getlineget和put函数

stringstream的简单用法