(我有一些拼字游戏字符串操纵c ++代码,我试图用win32api运行。)
void print_plain_vector_strings(vector<string> S) //works fine
{
for(vector<string>::const_iterator it=S.begin(); it !=S.end(); ++it)
cout<<*it<<endl;
}
问题:
如何使用printf而不是cout重写print_plain_vector_strings?
printf(“%s\n”, *it); //is the idea
我现在如何使用TextOut将其内容发送到win32 API?
TextOut(hdc,x,y,*it,length); //is the idea
我希望有一种简单的方法可以做到这一点,但是,不知怎的,我找不到任何方法。
答案 0 :(得分:2)
使用string
printf(“%s\n”, (*it).c_str());
方法返回char * C string:
TextOut
对于TextOut(hdc, x, y, (*it).c_str(), (*it).length()); // UNICODE is not defined
,您需要将ANSI C字符串转换为Unicode。如果您只使用ANSI,
你可以写:
void print_plain_vector_strings(const vector<string>& S)
此外,最好通过引用传递矢量,现在它正在复制每个调用:
{{1}}