Почему моя программа выполняется раньше, когда она действительно должна? - PullRequest
0 голосов
/ 28 апреля 2020

Хорошо, здесь я написал код, эта программа работает до первого, пока l oop без выполнения всей программы. Я связал несколько способов, таких как создание функции, но столкнулся с той же проблемой.

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string str1, str2, temp;
    string *ptr1, *ptr2, *ptrtemp;
    int i, j;
    cout << "Enter string A: ";
    getline(cin, str1);
    cout << "Enter string B: ";
    getline(cin, str2);

    ptr1 = &str1;
    ptr2 = &str2;
    //swaping
    ptrtemp = ptr1;
    ptr1 = ptr2;
    ptr2 = ptrtemp;

    cout << "Now String A is= ";
    i = 0;
    while (i < str2.size())
    {
        cout << *ptr1;
        ptr1++;
        i++;
    }

    cout << "Now String B is= ";
    j = 0;
    while (j < str1.size())
    {
        cout << *ptr2;
        ptr2++;
        j++;
    }
    return 0;
}

1 Ответ

0 голосов
/ 28 апреля 2020
string *ptr1, *ptr2, *ptrtemp;
...
    ptr1++;

Итак, ptr1 указывает на строку. Затем вы увеличиваете его значение, что указывает на некоторую другую строку. Но нет другой строки, на которую он может указывать.

Я подозреваю, что вы думаете, ptr1++; как-то заставит ptr1 указывать на другой символ в той же строке. Но он не может этого сделать. string * может указывать только на строку, не может указывать на символ в строке.

...