我需要通过用户提示填充此数组。我正在考虑将用户条目读入字符串,然后将该字符串分配给数组,但这似乎不是解决此问题的正确方法。有人可以帮助我吗?
我接收到的错误"数组类型数组[100]不可分配"
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string.h>
using namespace std;
int main()
{
string theString;
char array[100]; // ARRAY MAX SIZE
int length = sizeof(array)-1;
char * ptrHead = array;
char *ptrTail = array + length - 1;
//USER PROMPTS & ARRAY FILL
cout << "Please enter a string to be reverse: " << endl;
cin >> theString;
array= theString;
//WHILE LOOP SWAPPING CHARACTERS OF STRING
while (ptrHead < ptrTail)
{
char temp = *ptrHead;
*ptrHead = *ptrTail;
*ptrTail = temp;
ptrHead++;
ptrTail--;
}
cout << array << endl;
return 0;
}
答案 0 :(得分:1)
cin >> array;
应该将输入直接放入数组中,我猜你想要的是
此外,您的字符串反转逻辑存在问题。您正在反转整个数组,而不仅仅是已填充的部分,这会将填充的部分放在数组的末尾。考虑使用像strlen()
这样的函数来查找实际输入的时长。
答案 1 :(得分:0)
数组不可分配。你应该在这里使用strcpy
:
但为此,您必须将theString
转换为C字符串。
strcpy(array, theString.c_str() );
然后调整你的ptrTail
指针,如下所示:
int length = theString.size();
char *ptrTail = array + length - 1;
答案 2 :(得分:0)
您可以使用string
将strcpy
复制到数组,或者使用cin >> array
将数据直接输入到数组中,但更好的解决方案是不使用{{1}数组,只需在算法中使用char
即可。这也是一个更好的解决方案,因为您可以溢出固定大小的string
数组
char
修改强>
使用指针相同:
cout << "Please enter a string to be reverse: " << endl;
cin >> theString;
for (unsigned int i = 0; i <= theString.size() / 2; ++i)
swap(theString[i], theString[theString.size() - 1 - i);
cout << theString<< endl;