使用空格作为哨兵值?

时间:2015-05-21 23:47:59

标签: c++ arrays

我写了一个简单的程序来反转一个字符串。现在我使用句号作为标记值来表示字符串的结尾。

相反,我想将其更改为空格以表示字符串的结尾。

然而,当我进行更改并运行程序时,它似乎没有识别出空白区域?

#include<iostream>

using namespace std;

const int DECLARED_SIZE = 100;

int main()
{
    cout<<"Enter string:"<<endl;
    char letter_box[DECLARED_SIZE],next;
    int index = 0;
    cin>> next;
    while ((next!='.')&&(index<DECLARED_SIZE)) //when (next!=' ') <---the change
    {
        letter_box[index] = next;
        index++;
        cin>>next;
    }
    int number_used = index;
    cout<<"The string reversed is:"<<endl;
    for (index = number_used-1;index>=0;index--)
        cout<<letter_box[index];
    cout<<endl;
    return 0;
}

1 个答案:

答案 0 :(得分:0)

非常确定您正在运行空间作为默认的空白字符分隔符。基本上对于这种情况,空间不算作一个字符而不会被传回。您应该在tab中遇到相同的问题并输入。

char letter_box[DECLARED_SIZE];
std::cin.get(letter_box, sizeof(letter_box), ' ');

几乎可以做你想要的,但是需要点击输入,所以你也可以只使用输入。

char letter_box[DECLARED_SIZE];
std::cin.get(letter_box, sizeof(letter_box));