为什么我的程序实际上应该在之前执行?

问题描述 投票:0回答:1

好的,我已经编写了代码,该程序一直运行到第一个while循环,而没有执行整个程序。我已经捆绑了多种方法(例如创建函数),但都面临相同的问题。

#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;
}
c++ execution
1个回答
0
投票
string *ptr1, *ptr2, *ptrtemp;
...
    ptr1++;

因此,ptr1指向一个字符串。然后,增加它的值,使其指向其他字符串。但没有其他字符串可以指向。

[我怀疑您正在考虑ptr1++;会导致ptr1指向同一字符串中的另一个字符。但这不可能。 string *只能指向字符串,它cannot指向字符串中的字符。

© www.soinside.com 2019 - 2024. All rights reserved.