0

所以我的实验室基本上是从 cin 中取出一个字符串,将它分成组件(分成各种字符),然后使用按位运算符对所有字符进行组件总和。最后,打印出结果。这就是我所拥有的。

输入第一个字符串后立即出现分段错误。

[编辑]现在运行没有 segFaults,但我得到结果 = 0、aInt = 0 和 bInt = 0。不知道为什么?我输入了 a = hello 和 b = world

using namespace std;
#include <iostream>
#include <stdio.h>                                                              
#include <stdlib.h> 

int main()
{
    string a, b;
    char *aStopstring, *bStopstring;
    unsigned long aInt, bInt;

    cout<<"Please enter a string: "<<endl;
    cin>> a;

    const char* aString = a.c_str();

    cout<<"Please enter another string: "<<endl;
    cin>> b;

    const char* bString = b.c_str();

    aInt = strtoul(aString, &aStopstring, 2);                                                       
    bInt = strtoul(bString, &bStopstring, 2); 

    cout<<aInt<< "     " << bInt<<endl;                               

    unsigned int c = aInt&bInt;
    unsigned int d = aInt^bInt;
    c = c>>1;
    unsigned int result = c^d;

    cout<<"The sum is: "<< (int)result <<endl;

    return 1;
}
4

2 回答 2

2

aString 和 bString 未分配。

char* aString = new char[255];
char* bString = new char[255];

确保在完成后删除这些指针。

delete[] aString;
delete[] bString;
aString = 0x0;
bString = 0x0;

如果您不需要使用 char* 进行输入,则可以使用 an std::string(因此您不必担心为输入分配足够的空间),然后使用 std::string 的底层 char 缓冲区使用c_str().

例子:

std::string aString;
std::cin >> aString;
const char* buffer = aString.c_str();
于 2013-05-03T19:57:13.880 回答
0

添加一条语句,例如aString = new char[80];在您第一次尝试将某些内容读入该变量之前。

于 2013-05-03T19:57:47.177 回答