Init basic_string c ++

时间:2014-01-24 15:18:00

标签: c++ string tchar stdstring

我有这个方法不是来自我。这里有人给了我。

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

我试图初始化这个“dir”变量但没有成功。我是C ++的初学者,整天看着所有可能的doc(或差不多:p)。有人可以解释我如何将字符串值传递给“dir”,关于tstring是由

定义的
typedef std::basic_string <TCHAR> tstring ;

PS:我看到我可以将参考值删除为“dir&amp;”,这是一个问题吗? PS2:如果你有一个很好的文档解释字符串值及其相应的字段,这将非常非常好;)

3 个答案:

答案 0 :(得分:3)

tstring一直是这种类型的类型,因此您将获得ascii或Unicode字符串,具体取决于您的编译标记。

要初始化字符串,请执行以下操作:

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

_T宏会将您的字符串转换为宽字符串,方法是在Unicode版本中使用L作为前缀,否则会将其保留为常规的ascii字符串。

答案 1 :(得分:1)

类似的东西:

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

答案 2 :(得分:0)

我没有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");
}

在我的Mac OS X上使用GCC。以上是否适合您?你得到的确切错误是什么?