矢量字符串到字符串(或c_string)到lpszString

时间:2014-03-18 08:49:22

标签: c++ winapi

(我有一些拼字游戏字符串操纵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; 
}

问题:

  1. 如何使用printf而不是cout重写print_plain_vector_strings?

    printf(“%s\n”, *it);  //is the idea
    
  2. 我现在如何使用TextOut将其内容发送到win32 API?

    TextOut(hdc,x,y,*it,length);  //is the idea
    
  3. 我希望有一种简单的方法可以做到这一点,但是,不知怎的,我找不到任何方法。

1 个答案:

答案 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}}