我对c不熟悉,我正试图解决Bjarne Stroustrup的书《编程原则和实践使用C》第四章中的练习6,但不明白为什么我的代码不起作用。
演习:
制作一个保持十个字符串值“零”、“一”、......、“九”的向量。在将一个数字转换为相应的拼写值的程序中使用它:例如,输入7给出输出7。有相同的程序,使用相同的输入回路,将拼写出来的数字转换成它们的数字形式;例如,输入7给出输出7。
我的循环只对一个字符串执行一次,对一个int执行一次,循环似乎在继续,但不管我输入什么,它都不做它应该做的事情。
有一次它对多个int输入有效,但仅每秒一次。这真的很奇怪,我不知道如何用另一种方式解决这个问题。
如果有人能帮我,那就太棒了。(我也不是以英语为母语的人,很抱歉,如果有错误的话)
这段代码中的库是随书提供的库,我想是为了让我们新手更容易开始。
#include "std_lib_facilities.h"
int main()
{
vector<string>s = {"zero","one","two","three","four","five","six","seven","eight","nine"};
string input_string;
int input_int;
while(true)
{
if(cin>>input_string)
{
for(int i = 0; i<s.size(); i++)
{
if(input_string == s[i])
{
cout<<input_string<<" = "<<i<<"\n";
}
}
}
if(cin>>input_int)
{
cout<<input_int<<" = "<<s[input_int]<<"\n";
}
}
return 0;
}
if(cin)
程序输入的可能实现如下所示:
std::string sentinel = "|";
std::string input;
// read whole line, then check if exit command
while (getline(std::cin, input) && input != sentinel)
{
// use string stream to check whether input digit or string
std::stringstream ss(input);
// if string, convert to digit
// else if digit, convert to string
// else clause containing a check for invalid input
}
例如,要区分
int
和string
值,可以使用peek()。最后两个转换操作(在int
和string
之间)最好由单独的函数完成。
假设包含标题:
#include <iostream>
#include <sstream>
当您(成功地)从std::c中读取输入时,输入将从缓冲区中提取。缓冲区中的输入被删除,无法再次读取。
当您第一次作为字符串读取时,它也会将任何可能的整数输入作为字符串读取。
有两种方法可以解决这个问题:
>
首先尝试读取为
int
。如果失败,清除错误并读取为字符串。
以字符串形式读取,并尝试转换为
int
。如果转换失败,则您有一个字符串。
我正在编写一个程序,用户输入一个班级中的学生人数、该班级参加的考试次数,然后输入每个学生的姓名和考试分数。然后,程序计算学生的成绩,并分配给他们一个相应的字母等级。然后最后,它将他们的分数添加到一个classSum,计算平均类分数并显示出来。 这就是我目前所拥有的:public class GradeCalculator{ 这是我得到的输出: 正如您所看到的,在第一个学生之后,输入姓名和考试分数并
我有一个while循环,它监视一个数据库,查看布尔值是否改变。如果在本地输入代码a,我希望这个while循环中断并停止监视数据库,即: 当循环运行时 代码为10个字符的整数,第一个数字始终为0。我尝试了以下各种方法来检测是否键入了内容: ...然而if语句运行,即使我没有键入任何内容。 程序在控制台中运行。有人知道如何解决这个问题吗?还有如何使用KeyEvent。键入键以检测零(0)字符?
我需要在while循环之前输入一个用户,这样它就会知道程序是否想继续。问题是while条件的更内部看不到扫描仪之前输入的一行。有什么建议吗?
我试图通过使用Kryonet进行通信来创建一个基本的IRC。我遇到的问题是,在我的代码中,我不能安全地使用允许用户键入和发送消息的main while循环,因为Scanner给出了一个错误,并且似乎跳过了对nextLine()的调用。我想做的是让扫描仪在继续之前等待用户输入。 更准确地说,程序将首先在行的开头放一个“:”,然后在用户按enter键后获取用户键入的任何内容,然后将其发送到服务器。我得
在 C# 中,while 循环用于多次迭代一部分程序,特别是在迭代的次数不固定的情况下,建议使用 while 循环而不是 for 循环。while 循环的语法格式如下所示: while(表达式){ 循环主体; // 要执行的代码 } 其中,循环主体可以是一个单独的语句,也可以是多条语句组成的代码块,当表达式的为真时,循环会一直执行下去。 while 循环的执行流程如下图所示
C++ 循环 只要给定的条件为真,while 循环语句会重复执行一个目标语句。 语法 C++ 中 while 循环的语法: while(condition) { statement(s); } 在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意的表达式,当为任意非零值时都为真。当条件为真时执行循环。 当条件为假时,程序流将