векторная строка в строку (или c_string) в lpszString

0

(У меня есть строка 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; 
}

Вопросов:

  1. Как переписать print_plain_vector_strings с помощью printf вместо cout?

    printf("%s\n", *it);  //is the idea
    
  2. Как я могу теперь отправить * его содержимое в win32 API с помощью TextOut?

    TextOut(hdc,x,y,*it,length);  //is the idea
    

Я ожидаю, что должен быть простой способ сделать это, но каким-то образом я не могу найти ЛЮБОЙ путь.

  • 0
    Возможно, вы захотите прочитать хорошую ссылку .
  • 3
    printf("%s\n", it->c_str());
Показать ещё 1 комментарий
Теги:
winapi

1 ответ

2
Лучший ответ

Использовать метод 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)
  • 0
    Спасибо, Алексей, и спасибо всем остальным! (Кстати, я впервые здесь задал вопрос)
  • 0
    @ user3432190 Вы можете принять ответ тогда :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню