【发布时间】:2021-01-14 22:42:58
【问题描述】:
我对 c++ 非常陌生,并编写了这个程序来反转一个单词。我尝试的是基本上循环遍历一个数组并将第一个字母与最后一个、第二个与倒数第二个等交换。但是结果是一些有线字符╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠Ω ⌠7p≈╗。我不想变通,因为网上有很多例子。我只是想知道为什么我正在做的事情不起作用。
#include <iostream>
using namespace std;
int main()
{
char word[10];
for (int i = 0; i < 10; i++)
{
word[i] = word[sizeof(word - i)];
}
cout << word << endl;
return 0;
}
它也给了我这个警告warning C6001: using uninitialized memory 'word'。但我虽然通过char word[10]初始化了内存。
【问题讨论】:
-
你的数组不包含任何内容。它是未初始化的。你要逆转什么?!
-
word[i] = word[sizeof(word)-i]; -
哦抱歉,我怎么没注意到
-
你已经标记了这个 C++,使用
std::string来反转一个字符串,你只需使用另一个的反向迭代器来构造它,即auto reversed_string = std::string(mystr.rbegin(), mystr.rend())。 -
您将问题中的代码从
char word[10];更改为char word[5] = {'a', 'p', 'p', 'l', 'e'};。您不能进行此类根本性更改,因为现在不仅错误消息不再匹配代码,而且已经给出的答案也不再匹配问题(并且必须更新)。
标签: c++ reverse c-strings function-definition