2016-05-01 105 views
0

我有一个返回字符串的函数。 我必须在函数中使用希腊字符定义该字符串,并返回该字符串。 我在Linux平台上工作,我的代码是用C++编写的。在linux中输入包含希腊字符的字符串

我的功能如下:

string gen_string() 
{ 
    string str = "αγρω"; 
    return str; 
} 

但我不能够给输入。 当我尝试复制粘贴我希望的希腊字符时,它显示为一些垃圾字符。

有人可以帮助我吗?

在此先感谢。

编辑: 感谢您的回复。

它不关于使用wstring或字符串。 当我将字符串复制到vim中以将其作为输入时,它显示为类似这样的内容。

▒〜^▒〜T▒〜A▒〜A201604¸▒〜B▒žMDF_F▒〜S123▒〜T▒〜B▒▒〜B▒

我还保持文本文件中尝试并从vim中打开文本文件。 但仍然是一样的。

+0

这似乎更像是一个IDE问题。 – zmbq

+0

有没有你不使用'wstring'和宽文字的原因? –

+0

什么不起作用?您是否无法创建包含希腊字符的源文件? –

回答

0

string只适用于ASCII字符,我相信。

您有可能是Unicode的国际字符。考虑将std::wstring用于多字节“宽”字符串。

+1

可能有更好的运气问它不一定,请参阅utf8。 –

+0

您正在混合存储内容的二进制存储和语义。 'std :: string'和'std :: wstring'(或通常的'std :: basic_string')都只能*存储* Unicode字符;他们没有意识到任何语义,只要你尝试'substr','operator []','length'等操作就会变得很明显。 'std :: string'对于ASCII是安全的,因为每个ASCII字符都保证适合'char',这意味着对于ASCII,存储元素等于一个语义字符元素。 –

+0

对,但会使用wstring不然,然后选择方法和运算符重载,知道如何处理多字节字符?我有一段时间没有处理这个问题,所以我的记忆有点生疏。 – yaakov

0

如果您的意思是从一些文本复制到终端输入,那么如何做到这一点取决于终端。如果它是一个gnome终端,您需要在区域设置中指定UTF-8,但我不确定这是否会让您看到希腊字母。

locale命令将列出locale.conf中的当前语言环境设置。您可能想要更改LANG设置。要做到这一点系统的一种方式是广

localectl设置语言环境LANG = en_country_code.UTF-8

变化COUNTRY_CODE。美国对美国是美国的,但我不知道希腊代码是什么。您可能需要成为root用户。改变它只是为了自己修改

〜/ .config/locale.conf (或$ XDG_CONFIG_HOME/locale.conf或$ HOME/.config/locale.conf)。

无论哪一个让你到locale.conf文件。在大多数系统中,它们都是。