为什么我的程序在它实际应该执行的时间之前执行?
Why my program executes before when it actually supposed to?
好的,我写了一段代码,这个程序运行到第一个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;
}
string *ptr1, *ptr2, *ptrtemp;
...
ptr1++;
所以,ptr1
指向一个字符串。然后增加它的值,使其指向其他字符串。但是没有其他字符串可以指向。
我怀疑您认为 ptr1++;
会以某种方式导致 ptr1
指向同一字符串中的不同字符。但它不可能那样做。 string *
只能指向字符串,不能指向字符串中的字符。
好的,我写了一段代码,这个程序运行到第一个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;
}
string *ptr1, *ptr2, *ptrtemp;
...
ptr1++;
所以,ptr1
指向一个字符串。然后增加它的值,使其指向其他字符串。但是没有其他字符串可以指向。
我怀疑您认为 ptr1++;
会以某种方式导致 ptr1
指向同一字符串中的不同字符。但它不可能那样做。 string *
只能指向字符串,不能指向字符串中的字符。