(У меня есть строка scrabble, управляющая кодом 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;
}
Вопросов:
Как переписать print_plain_vector_strings с помощью printf вместо cout?
printf("%s\n", *it); //is the idea
Как я могу теперь отправить * его содержимое в win32 API с помощью TextOut?
TextOut(hdc,x,y,*it,length); //is the idea
Я ожидаю, что должен быть простой способ сделать это, но каким-то образом я не могу найти ЛЮБОЙ путь.
Использовать метод c_str() для string
возвращающей char * C string:
printf("%s\n", (*it).c_str());
Для TextOut
вам нужно преобразовать строку ANSI C в Unicode. Если вы работаете только с ANSI, вы можете написать:
TextOut(hdc, x, y, (*it).c_str(), (*it).length()); // UNICODE is not defined
Кроме того, лучше передать вектор по ссылке, теперь он копирует каждый вызов:
void print_plain_vector_strings(const vector<string>& S)
printf("%s\n", it->c_str());