用字符串填充char数组? C ++

时间:2017-01-27 06:00:06

标签: c++ arrays

我需要通过用户提示填充此数组。我正在考虑将用户条目读入字符串,然后将该字符串分配给数组,但这似乎不是解决此问题的正确方法。有人可以帮助我吗?

我接收到的错误"数组类型数组[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;
    }

3 个答案:

答案 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;

See Here

答案 2 :(得分:0)

您可以使用stringstrcpy复制到数组,或者使用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;