我实际上写了一个函数来将字符串转换为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;每当有空间时,新值?
请帮助/解释
答案 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”将在不同的行上打印每个数字,无论您是否用空格,制表符或换行符分隔它们。