string — Init basic_string Переполнение стека

У меня есть этот метод, который не от меня. Кто-то здесь дал мне это.

void captureNewPictures(std::vector<Picture> &vecPicsOld, const tstring &dir)

И я попытался инициировать эту переменную «dir» без успеха. Я новичок в C ++ и весь день наблюдал за всеми возможными документами (или почти: p). Может кто-нибудь объяснить мне, как передать строковое значение в «dir», пожалуйста, в отношении tstring определяется как

typedef std::basic_string <TCHAR> tstring ;

PS: я видел, что я мог удалить ссылку на значение «dir&», это проблема для после?
PS2: Если у вас есть хороший документ, объясняющий строковые значения и соответствующие поля, это было бы очень здорово;)

1

Решение

tstring Это были типы таким образом, так что вы получите строки ascii или Unicode в зависимости от ваших флагов компиляции.

Для инициализации строки сделайте что-то вроде этого:

tstring greeting = _T("hello, world");

_T макрос преобразует вашу строку в широкую строку, добавив к ней префикс L в сборке Unicode, в противном случае он останется обычной строкой ascii.

3

Другие решения

Что-то вроде:

tstring yourString = _T("<your string here>");
captureNewPictures(yourVecPicsOld, yourString);
1

У меня нет окна Windows, чтобы проверить это, но

#include <string>
#include <iostream>

typedef char TCHAR;

typedef std::basic_string<TCHAR> tstring;

void somefunc(const tstring &dir)
{
std::cout << dir << '\n';
}

int main()
{
tstring foo = "hello world";
somefunc(foo);

somefunc("goodbye world");
}

работает с GCC на моем Mac OS X box. Вышесказанное работает для вас? Какую именно ошибку вы получаете?

0
По вопросам рекламы [email protected]