【问题标题】:text from ifstream is coming with "\0\0\0 in start来自 ifstream 的文本在开始时带有“\0\0\0”
【发布时间】:2012-11-19 11:00:00
【问题描述】:

这是我获取文本的方式:

switch(lsel) {
    case 0:
        luafile = "lua/example.lua";
        break;
    case 1:
        luafile = "lua/example2.lua";
        break;
    }
ifstream f(luafile);
f >> noskipws;  //don't want to skip spaces !
vector<unsigned char> v(
    (istream_iterator<unsigned char>(f))
    , (istream_iterator<unsigned char>()));
LBytes lexing = LBytes(bytes, 2);
lexing += lselect;
lexing += LBytes(v.data(), v.size());
//f.close();
return lexing;

然后我在 C# 中处理它:

int docnumber = BitConverter.ToInt32(Core.ncon.ArrayRead, 2);
Log(docnumber.ToString());
char[] valx = new char[Core.ncon.ArrayReadSize - 2 - sizeof(int)];
Array.Copy(Core.ncon.ArrayRead, 2, valx, 0, Core.ncon.ArrayReadSize - 2 - sizeof(int));
Core.lua[docnumber] = new string(valx);

并放入 RichTextBox

private void confListBox_SelectedIndexChanged(object sender, EventArgs e) {
    if (confListBox.SelectedIndex < 10) {
        string one = Core.lua[confListBox.SelectedIndex];
        this.luaTextBox.Text = one;
        }

现在一个包含字符串:

"\0\0\0\0io.write(\"Please enter your name: \")\n-- name = io.read() -- read input from user\nname = \"someone\"\nprint (\"Hi \" .. name .. \", enjoy hacking with Lu"

文本将是""

\0\0\0\0 这个东西是从哪里来的?

【问题讨论】:

    标签: c# c++ string ifstream


    【解决方案1】:

    您似乎在文本前面添加了一些来自与文件不同来源的内容:

    LBytes lexing = LBytes(bytes, 2);
    lexing += lselect;
    lexing += LBytes(v.data(), v.size());
    

    我怀疑前两行贡献了零。

    【讨论】:

    • 啊确定错误在Array.Copy(Core.ncon.ArrayRead, 2, valx, 0, Core.ncon.ArrayReadSize - 2 - sizeof(int)); 一定是Array.Copy(Core.ncon.ArrayRead, 2 + sizeof(int), valx, 0, Core.ncon.ArrayReadSize - 2 - sizeof(int));
    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 2020-05-02
    • 2012-10-16
    • 1970-01-01
    • 2019-04-07
    相关资源
    最近更新 更多