大家好,我正面临一个简单的 C++ 交换问题(两个字符串)。我无法交换到 work.My 输出只有 "splendid day"
Hi everyone, I`m sitting with a simple swap issue in C++ (two strings). I cant get my swap to work.My output is only "splendid day"
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a, b, temporary; // function to swap s and d (splendid day to dplendid say)
cout << "Input two words: " << endl;
cin >> a >> b;
cin.get(); //capture user input // to add index parameters?
temporary = a[0]; //assign temp variable to a[0]
b[0] = a[0]; //allocate b to a
b[0] = temporary; //do swap
swap(a[0], b[0]);
cout << "The two words you entered are: " << a << " " << b << endl; //attempt output
return 0;
}
如果你想交换每个字符串的第一个字符,只需执行交换(而不是通过临时交换和手动操作):
swap(a[0], b[0]);
首先,您只是交换字符串的第一个字符。 a[0]
是 a
的第一个字符,b
.
也是如此
其次,您交换了两次:一次使用 std::swap
,一次使用三个分配和一个临时分配。交换两次使其恢复原状!
交换一次
temporary = a[0]; //assign temp variable to a[0]
b[0] = a[0]; //allocate b to a
b[0] = temporary; //do swap
再次交换
swap(a[0], b[0]);
代码的几个问题 -
- 您需要将临时声明为 char
string a, b; // function to swap s and d (splendid day to dplendid say)
char temporary;
- 临时分配 b[0] 的值
temporary = b[0]; //assign temp variable to b[0]
- 给a[0]赋临时值
a[0]= temporary;
换一次就够了。最后的交换功能将撤消这些更改,因此要么删除它,要么不要手动交换字符。
这在我这边解决了,我得到了 dplendid say 作为输出。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a, b, temporary; // function to swap s and d (splendid day to dplendid say)
cout << "Input two words: " << endl;
cin >> a >> b;
cin.get(); //capture user input // to add index parameters?
temporary = a[0]; //assign temp variable to a[0]
b[0] = a[0]; //allocate b to a
b[0] = temporary; //do swap
swap(a[0], b[0]);
cout << "The two words you entered are: " << a << " " << b << endl; //attempt output
return 0;
}
如果你想交换每个字符串的第一个字符,只需执行交换(而不是通过临时交换和手动操作):
swap(a[0], b[0]);
首先,您只是交换字符串的第一个字符。 a[0]
是 a
的第一个字符,b
.
其次,您交换了两次:一次使用 std::swap
,一次使用三个分配和一个临时分配。交换两次使其恢复原状!
交换一次
temporary = a[0]; //assign temp variable to a[0]
b[0] = a[0]; //allocate b to a
b[0] = temporary; //do swap
再次交换
swap(a[0], b[0]);
代码的几个问题 -
- 您需要将临时声明为 char
string a, b; // function to swap s and d (splendid day to dplendid say)
char temporary;
- 临时分配 b[0] 的值
temporary = b[0]; //assign temp variable to b[0]
- 给a[0]赋临时值
a[0]= temporary;
换一次就够了。最后的交换功能将撤消这些更改,因此要么删除它,要么不要手动交换字符。
这在我这边解决了,我得到了 dplendid say 作为输出。