-1

相关问题

在 C++ 中,我需要一个 TCHAR 字符串 (LPTSTR)。C# StreamWriters 可以输出 ASCII、Unicode、UTF32 等...不是 TCHAR 字符串。

我不是在 C++ 中调用函数,而是通过命名管道发送字符串消息。

C#:

using (NamedPipeClientStream pipeClient = new NamedPipeClientStream(".", "mynamedpipe", PipeDirection.InOut))
using (StreamWriter sw = new StreamWriter(pipeClient, Encoding.UTF8))
using (StreamReader sr = new StreamReader(pipeClient, Encoding.Unicode))
{
    pipeClient.Connect();
    pipeClient.ReadMode = PipeTransmissionMode.Message;
    sw.Write("Howdy from Kansas");
    sw.Flush();

    var b = sr.ReadLine();
    Console.Write(b);
}

C++ 需要一个 TCHAR。建议?

4

2 回答 2

0

这不是一个直接的答案,因为它不像目标那样使用流写入器。但是由于限制,这种方法工作得很好。

解决方法:

using (NamedPipeClientStream pipeClient = new NamedPipeClientStream(".", "mynamedpipe", PipeDirection.InOut))
{
    pipeClient.Connect();
    pipeClient.ReadMode = PipeTransmissionMode.Message;
    var msg = Encoding.Unicode.GetBytes("Hello from Kansas!");
    pipeClient.Write(msg, 0, msg.Length);
}
于 2015-02-23T20:02:39.687 回答
0

根据您的评论,您实际上需要 UTF-16 编码的文本。这对应于Encoding.Unicode。所以你会使用

new StreamWriter(pipeClient, Encoding.Unicode)

也就是说,您至少还应该考虑字节顺序的问题。通过网络传输数据时,我希望您在结束时转换为网络字节顺序,并在接收时转换为主机字节顺序。

于 2015-02-23T20:44:13.160 回答