부스트를 사용하여 문장의 각 단어의 첫 글자를 대문자로 쓰는 방법을 찾고있었습니다. 코드를 일관성있게 만드는 것, 즉 최종 문장은 입력 문장에 공백이나 탭이 없을 것입니다. 개별 단어를 얻으려면 boost :: alogrithm :: split을 사용하고 boost :: algorithm :: join을 다시 결합합니다. 첫 글자를 대문자로 입력하는 방법은 무엇입니까? 부스트 라이브러리를 사용하여 문장의 각 단어의 첫 글자를 대문자로 바꾸십시오.
나는 문제는 당신이 문장이 무엇인지를 결정하는 방법을 정의하는 것입니다이 코드를#include <iostream>
#include <vector>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string.hpp>
int main()
{
using namespace std;
string str("cONtainS SoMe CApiTaL WORDS");
vector<string> strVec;
using boost::is_any_of;
using boost::algorithm::token_compress_on;
boost::algorithm::split(strVec, str, is_any_of("\t "), token_compress_on);
vector<string>::iterator i ;
for(i = strVec.begin() ; i != strVec.end(); i++)
{
(*i)[0] = boost::to_upper((*i)[0]);
cout<<*i<<endl;
}
return 0;
}
우리는 ASCII를 사용하고 있습니까, 아니면 유니 코드와 호환 가능합니까? (힌트 : 부스트는 내가 아는 한 유니 코드를 지원하지 않는다.) –
현재 ASCII만을 고려하고있다. 하지만 나중에 유니 코드 지원이 필요할 것입니다. –
유니 코드의 경우 실제로는 단어를 대문자로 사용하기 위해 ICU와 같은 유니 코드 인식 라이브러리가 필요합니다. 따라서 분할 + 결합 전략은 현재 비용이 많이 들고 장기적으로는 효과가 있습니다. –