为什么我在读取String ^时会得到乱码输出和有效输出?

时间:2011-04-28 00:19:22

标签: visual-c++

我正在尝试将一些整数写入文件(作为字符串。)每次我尝试运行这段代码时,我都会将整数写入文本文件,就像计划一样,但在整数之前,我会得到一些胡言乱语。我做了一些实验,发现如果我什么都没有放入System :: String ^ b,它会给文件或消息框提供相同的乱码输出,但我无法弄清楚为什么它会这样做如果我将这些整数连接起来(作为字符串)。这里可能出现什么问题?

using namespace msclr::interop;
using namespace System;
using namespace System::IO;
using namespace System::Text;

...

System::IO::StreamWriter ^ x;
char buffer[21], buffer2[3];
int a;
for(a = 0; a < 10; a++){
    itoa(weight[a], buffer, 10);
    strcat(buffer, buffer2);
}
System::String ^ b = marshal_as<String^>(buffer);
x->WriteLine(b);

2 个答案:

答案 0 :(得分:0)

该文件的格式是什么?您可能正在阅读带有字节顺序标记的UTF-8文件,该文件由文本编辑程序静默应用。

http://en.wikipedia.org/wiki/Byte_order_mark

答案 1 :(得分:0)

有问题的错字或代码中的错误:将buffer2传递给itoa而不是buffer

另外,将buffer初始化为"";