【问题标题】:converting from binary string to int using strtoll?使用strtoll从二进制字符串转换为int?
【发布时间】:2013-10-12 00:13:47
【问题描述】:

我必须从包含一堆二进制数的文本文件中读取,然后将它们转换为整数并将它们存储在一个数组中。我已经创建了一个函数来执行此操作,但是,该函数只返回一个数字。它似乎没有通过文件,或者它只是不起作用。谁能弄清楚为什么?

void readf4()
{
    std::ifstream inFile("f4.txt");
    std::vector<int> intArray;
    std::string line;
    //unsigned num = 0;
    int inc = 0;
    char * pEnd;
    for(unsigned long int result; std::getline(inFile,line); result = strtol(line.c_str(),&pEnd,10))
    {
        //seg fault if I include these lines
        //intArray[inc] = result;
        //inc++;

        cout<<result;//always returns 9223372036854775807
        cout<<"\n";
    }
}

提前致谢!

【问题讨论】:

  • 在循环的第一次迭代中,result 未初始化。 for 循环中的增量表达式在迭代之间执行,但不是在第一次迭代之前。
  • intArray[inc] 不起作用,因为 intArray 的大小为零。它没有有效的索引。你想要intArray.push_back(result);
  • @igorTandetnik 我初始化了它并出现了相同的数字。不知道发生了什么

标签: c++ strtol


【解决方案1】:

您遇到的问题是您使用了一个空的vector 并尝试为其元素分配一些东西。

你需要使用

intArray.push_back(result);

而且你需要先初始化result

【讨论】:

  • 所以我将 for 更改为 for(unsigned long int result = 0;.... 并且 strtol 是从二进制字符串更改为整数的正确函数吗?感谢您的帮助
  • 我认为strtoll 很好,但我不确定base 是10 还是2?
  • hmm 我可能误解了如何使用该功能我将尝试base 2
  • 啊,就是这样!我以为你必须把基地转换成。我错了,谢谢你的帮助!
猜你喜欢
  • 2012-11-22
  • 2013-01-30
  • 2014-11-28
  • 2012-02-14
  • 2016-07-13
  • 2020-08-03
  • 2021-02-24
相关资源
最近更新 更多