C++ 在常量字符串中使用不同的编码
我有一个在linux和windows上运行的程序。此程序从linux/windows接收数据。数据是西里尔字母字符串。 linux上的程序从windows接收数据,并将其与具有西里尔常量固定大小字符串的常量向量进行比较。或者Windows上的程序从linux接收数据,并执行相同的操作 在linux中,固定大小的字符串每个符号有2个字节,在windows中,每个符号有1个字节。C++ 在常量字符串中使用不同的编码,c++,linux,windows,encoding,C++,Linux,Windows,Encoding,我有一个在linux和windows上运行的程序。此程序从linux/windows接收数据。数据是西里尔字母字符串。 linux上的程序从windows接收数据,并将其与具有西里尔常量固定大小字符串的常量向量进行比较。或者Windows上的程序从linux接收数据,并执行相同的操作 在linux中,固定大小的字符串每个符号有2个字节,在windows中,每个符号有1个字节。 问题是如何正确编译这个Cyric常数字符串到Windows和Linux的相同编码?在UC++中使用Unicode是不容易
问题是如何正确编译这个Cyric常数字符串到Windows和Linux的相同编码?在UC++中使用Unicode是不容易的,没有外部库。如果您所做的只是比较字符串,那么为什么不将所有内容存储在
char32\U t
字符串中,即std::u32string
或U“string”
。这样可以避免每个符号的字节数不匹配。@DeiDei这是个好主意,但存在一个将与我的程序一起工作的程序,它是第三方软件。该软件可以将其区域设置发送到我的程序,而不再发送。我知道这个软件总是使用WCHAR__T(uint16___T),linux使用UTF-8,windows使用ISO-8859-5。我不知道如何解决它。在没有外部库的情况下,在C++中使用Unicode并不容易。如果您所做的只是比较字符串,那么为什么不将所有内容存储在char32\U t
字符串中,即std::u32string
或U“string”
。这样可以避免每个符号的字节数不匹配。@DeiDei这是个好主意,但存在一个将与我的程序一起工作的程序,它是第三方软件。该软件可以将其区域设置发送到我的程序,而不再发送。我知道这个软件总是使用WCHAR__T(uint16___T),linux使用UTF-8,windows使用ISO-8859-5。我不知道将来怎么解决它。