operators (std::basic_string)
运算符<<,>%28 std::basic[医]字符串%29
Defined in header | | |
---|---|---|
template <class CharT, class Traits, class Allocator> std::basic_ostream<CharT, Traits>& operator<<(std::basic_ostream<CharT, Traits>& os, const std::basic_string<CharT, Traits, Allocator>& str | (1) | |
template <class CharT, class Traits, class Allocator> std::basic_istream<CharT, Traits>& operator>>(std::basic_istream<CharT, Traits>& is, std::basic_string<CharT, Traits, Allocator>& str | (2) | |
1%29表现为FormattedOutputFunction
.在构造和检查哨兵对象之后,确定输出格式填充如下:
A%29如果str.size()
不少于os.width()
,使用范围[str.begin(), str.end())
否则为b%29,则为(os.flags() & ios_base::adjustfield) == ios_base::left
、地点os.width()-str.size()
的副本os.fill()
字符序列c%29之后的字符,否则,放置os.width()-str.size()
的副本os.fill()
字符序列之前的字符
然后存储结果序列%28中的每个字符str加上将%29填充到输出流os好像通过打电话os.rdbuf()->sputn(seq, n),在哪里n=std::max(os.width(), str.size())...
最后,呼叫os.width(0)
取消…的影响std::setw
如果有的话。
2%29表现为FormattedInputFunction
.在构造和检查哨兵对象(可能跳过前导空格)之后,首先清除str
带着str.erase()
,然后从is
并将它们附加到str
好像str.append(1, c)
,直到下列条件之一变为真为止:
- N字符被读取,其中N是is.width()如果is.width() > 0,否则N是str.max_size()
- 文件结束状态发生在流中。
is
std::isspace(c,is.getloc())
对于下一个字符是正确的。c
在is
%28此空白字符保留在输入流%29中。
如果没有提取字符,那么std::ios::failbit
被设定为is
,这可能会std::ios_base::failure
...
最后,呼叫os.width(0)
取消…的影响std::setw
如果有的话。
例外
1%5月29日投掷std::ios_base::failure
如果在输出期间抛出异常。
2%5月29日投掷std::ios_base::failure
如果没有从is
%28E.。g流位于文件末尾,或仅由%29空格组成,或者在输入期间抛出异常。
参数
os | - | a character output stream |
---|---|---|
is | - | a character input stream |
str | - | the string to be inserted or extracted |
返回值
1%29os
...
2%29is
...
例
二次
#include <iostream>
#include <string>
#include <sstream>
int main()
{
std::string greeting = "Hello, whirled!";
std::istringstream is(greeting
std::string hello_comma;
is >> hello_comma;
std::cout << greeting << '\n' << hello_comma << '\n';
}
二次
产出:
二次
Hello, whirled!
Hello,
二次
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。
http://en.cppreference.com/w/cpp/string/basic[医]字符串/运算符[医]ltlttgt