重载运算符>>用于不区分大小写的字符串

Overloading operator>> for case insensitive string

本文关键字:gt 大小写 字符串 用于 运算符 重载 不区      更新时间:2023-10-16

给定 cpp.reference.com 中ci_string的定义,我们将如何实现运算符>>?我的尝试涉及 std::read,但它似乎不起作用(也就是说,gcount() 正确计算输入的字符数,但没有输出)

#include <iostream> 
#include <cctype> 
#include <string> 
// ci_string definition goes here 
std::istream& operator>>(std::istream& in, ci_string& str)
{
    return in.read(&*str.begin(), 4); 
} 
int main()
{
    ci_string test_str; 
    std::cin >> test_str; 
    std::cout << test_str; 
    return 0; 
} 

怎么样

std::istream& operator>>(std::istream& in, ci_string& str)
{
    std::string tmp;
    in >> tmp;
    str.assign( tmp.begin(), tmp.end() ); 
    return in;
}