字符串到ascii函数

时间:2014-10-09 02:43:35

标签: c++ ascii

我实际上写了一个函数来将字符串转换为ascii值。 但是我设法让自己感到困惑,并且不明白为什么我自己的代码会起作用。

这里是:

void convertToString()
{
    char redo;
    int letter;
    int length;
    do {
        cout<< "How long is your word \n";
        cin >> length;

        cout << "Type in the letter values \n";

        for (int x = 0; x < length; x++) {
            cin >> letter;
            cout << char (letter);
        }

        cout << "\n To enter another word hit R" << endl;
        cin >> redo;

    } while (redo == 'R');
}

在终端中我可以输入我想要的所有ASCII值而没有更改行,但是我虽然这会引起问题,但无论如何我的问题是,击中输入按钮与击中空格相同?如果不是我不明白我的代码如何能够打印出字符,因为我把它写在一行...它是否分配了整数&#34;字母&#34;每当有空间时,新值?

请帮助/解释

1 个答案:

答案 0 :(得分:0)

这是为了扩大伊戈尔在评论中所说的内容,并举一个例子。

正如伊戈尔所说,istream::operator>>(&int)将读取非空格。这意味着对于运算符上的每个调用,它会沿着输入流(您键入的内容)扫描非空格并再次读取直到下一个空格。下次通话将从您上次停下的地方开始。因此,对于您正在接受int的情况,输入空格或换行符完全相同。

您可以使用一小段扫描到EOF的代码来验证这一点:

#include <iostream>
int main()
{
    int number;
    while (std::cin >> number)
    {
        std::cout << number << std::endl;
    }

    return 0;
}

这将等待用户输入完成(按Enter键),但为输入中的每个整数打印一个新行,由空格分隔。因此,“1 2 3 4”将在不同的行上打印每个数字,无论您是否用空格,制表符或换行符分隔它们。