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

时间:2013-10-20 09:43:21

标签: c++ case-insensitive istream

鉴于来自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; 
} 

1 个答案:

答案 0 :(得分:4)

怎么样

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