C++实现循环从标准输入流中读取带空格的字符串,该怎么处理

C++实现循环从标准输入流中读取带空格的字符串
比如我想读取以下字符串 hello_world , jisuanji,  a = 8 这三个字符串,如何实现。
------解决思路----------------------
std::basic_istream::getline

  C++ 输入/输出库 std::basic_istream 
basic_istream& getline( char_type* s, std::streamsize count );					(1)
basic_istream& getline( char_type* s, std::streamsize count, char_type delim ); (2)

1) 提取字符流的线(相当于getline(s, count, widen(’\n’)))的,直到结束

 2) 提取字符流,直到指定的分隔符.

 表现为UnformattedInputFunction。建设和检查岗哨对象的,提取的字符*this,并将其存储在连续位置的数组,该数组的第一个元素是指向s,直至出现以下任何情况:(测试中显示的顺序)

文件的条件的结束发生在输入序列中(在这种情况下,setstate(eofbit)被执行)

下一个可用的字符c是分隔符,确定Traits::eq(c, delim)。分隔符中提取(不像basic_istream::get())和计入gcount(),但还没有存储.

count-1字符已被提取的(在这种情况下setstate(failbit)执行).

如果函数中提取任何字符(例如,如果count < 1),setstate(failbit)执行.

 在任何情况下,如果count>0,然后将其存储到下一个连续的阵列的位置和更新的一个空字符CharT()gcount().

注释
由于条件#2之前测试条件#3中,输入线完全适合的缓冲液,不触发failbit.

 因为终止字符算作提取的字符,输入空行不触发failbit.....

参数
s - 指针的存储的字符的字符串

count - 所指向的字符串的大小s

delim - 分隔符,停止提取的。它被提取,但不存储.

返回值
*this
示例
#include <iostream>
#include <sstream>
#include <vector>
#include <array>
 
int main()
{
    std::istringstream input("abc
------解决思路----------------------
def
------解决思路----------------------
gh");
    std::vector<std::array<char, 4>> v;
 
    for(std::array<char, 4> a; input.getline(&a[0], 4, '
------解决思路----------------------
'); ) {
        v.push_back(a);
    }
 
    for(auto& a : v) {
        std::cout << &a[0] << '\n';
    }
}

输出:
abc
def
gh
------解决思路----------------------
 const char *str="hello_world , jisuanji,  a = 8,";
    vector<string> vstr;
    auto p0=str;
    for(auto p=p0;*p;p++) if(*p==','){
        vstr.push_back(string(p0,p));
        p0 =p+1;
    }
    if(*p0) vstr.push_back(p0);
    for(auto &t : vstr) cout<<t<<endl;

------解决思路----------------------
引用:
Quote: 引用:

std::basic_istream::getline

  C++ 输入/输出库 std::basic_istream 
basic_istream& getline( char_type* s, std::streamsize count );					(1)
basic_istream& getline( char_type* s, std::streamsize count, char_type delim ); (2)

1) 提取字符流的线(相当于getline(s, count, widen(’\n’)))的,直到结束

 2) 提取字符流,直到指定的分隔符.

 表现为UnformattedInputFunction。建设和检查岗哨对象的,提取的字符*this,并将其存储在连续位置的数组,该数组的第一个元素是指向s,直至出现以下任何情况:(测试中显示的顺序)

文件的条件的结束发生在输入序列中(在这种情况下,setstate(eofbit)被执行)

下一个可用的字符c是分隔符,确定Traits::eq(c, delim)。分隔符中提取(不像basic_istream::get())和计入gcount(),但还没有存储.

count-1字符已被提取的(在这种情况下setstate(failbit)执行).

如果函数中提取任何字符(例如,如果count < 1),setstate(failbit)执行.

 在任何情况下,如果count>0,然后将其存储到下一个连续的阵列的位置和更新的一个空字符CharT()gcount().

注释
由于条件#2之前测试条件#3中,输入线完全适合的缓冲液,不触发failbit.

 因为终止字符算作提取的字符,输入空行不触发failbit.....

参数
s - 指针的存储的字符的字符串

count - 所指向的字符串的大小s

delim - 分隔符,停止提取的。它被提取,但不存储.

返回值
*this
示例
#include <iostream>
#include <sstream>
#include <vector>
#include <array>
 
int main()
{
    std::istringstream input("abc
------解决思路----------------------
def
------解决思路----------------------
gh");
    std::vector<std::array<char, 4>> v;
 
    for(std::array<char, 4> a; input.getline(&a[0], 4, '
------解决思路----------------------
'); ) {
        v.push_back(a);
    }
 
    for(auto& a : v) {
        std::cout << &a[0] << '\n';
    }
}

输出:
abc
def
gh

这不是标准输入流啊,我的意思是从终端或者说是控制台获取字符串
std::basic_istream 是各种输入流的基类,包括标准输入流