0

将 ACTUAL 字符串输入到 strtuol 时出现问题。输入字符串应该是 32 位长的无符号二进制值。

显然,有问题,InputString = apple;但我不知道如何解决这个问题。有什么想法吗?这不应该那么困难。不知道为什么我会遇到这样的困难。

多谢你们。

#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
    char InputString[40];
    char *pEnd = NULL;          // Required for strtol()
    string apple = "11111111110000000000101010101000";
    //cout << "Number? ";
    //cin >> InputString;
    InputString = apple;
    unsigned long x = strtoul(InputString, &pEnd, 2);     // String to long

    cout << hex << x << endl;
    return 1;
}
4

2 回答 2

1

更好的方法是避免使用遗留 C 函数并使用 C++ 标准函数:

string apple = "11111111110000000000101010101000";
unsigned long long x = std::stoull(apple, NULL, 2); // defined in <string>

注意: std::stoull实际上会在::strtoull内部调用,但它允许您只处理std::string对象,而不必将其转换为 C 风格的字符串。

于 2013-10-03T17:01:18.060 回答
0

包括 :

#include<cstdlib> // for strtol()
#include<cstring> // for strncpy()

接着

 strncpy(InputString ,apple.c_str(),40); 
                            ^
                            |
                            convert to C ctring 

或者简单地说,

unsigned long x = strtoul(apple.c_str(), &pEnd, 2);

于 2013-10-03T16:39:36.407 回答