내가 템플릿을 기반으로 파일에서 읽을 수있는 프로그램을 받고 문제가 있어요 :C++ : 함수 이름에 문자 유형을 명시하지 않고 읽고 쓸 수있는 좋은 방법이 있습니까? 예를 들어 (wcout 대 COUT 등)
bool parse(basic_ifstream<T> &file)
{
T ch;
locale loc = file.getloc();
basic_string<T> buf;
file.unsetf(ios_base::skipws);
if (file.is_open())
{
while (file >> ch)
{
if(isalnum(ch, loc))
{
buf += ch;
}
else if(!buf.empty())
{
addWord(buf);
buf.clear();
}
}
if(!buf.empty())
{
addWord(buf);
}
return true;
}
return false;
}
이 내가 <char>
이 클래스의 인스턴스를 사용할 수는 있지만, 것입니다 <wchar_t>
(분명히)을 사용할 때 문제가 있습니다.
클래스의 외부, 내가 사용하고 있습니다 : 예상대로 iter->first
이 char
가 아닌 경우
for (iter = mp.begin(); iter != mp.end(); ++iter)
{
cout << iter->first << setw(textwidth - iter->first.length() + 1);
cout << " " << iter->second << endl;
}
는, cout을 폭발을이 데이터 구조체 (그것은 map<basic_string<T>, int>
있어)에서 모든 정보를 작성하고 정렬.
온라인으로 보았지만 wcout을 사용하는 것이 합의되었지만이 프로그램은 컴파일 타임에 템플릿을 변경할 수 있어야하므로 (<char>
-><wchar_t>
) 나는 어떻게 빠져 나갈 수 있는지 잘 모르겠습니다. 단순히 cout 또는 wcout을 선택하십시오. 즉, 많은 코드를 변경하지 않고 넓은 문자를 읽고 쓸 수있는 방법이 없으면 않습니다.
이 설명이 어색하게 복잡하게 들리면 알려주세요. 가능한 한 최선을 다해 답변 해 드리겠습니다.