C++,cin,直到不再使用 while 循环在线输入
C++, cin until no more input on line using a while loop
我的 C++ 程序有问题。我重新格式化并显示用户在控制台中输入的单词。如果用户输入: Hi I am bob.The 用户将在控制台输入 bob 后按回车键。我将重新格式化并以新格式重新打印它。问题是在输入该控制台行上的所有单词之前,我不想显示更多输入的消息。我的当前循环要么在每个单词后显示输入请求,要么根本不显示。这取决于我是否包含提示。我需要让一个 while 循环处理每个单词并输出它并在最后一个单词后停止。什么是布尔参数?我包含我的代码以供参考。
int _tmain(int argc, _TCHAR* argv[])
{
int b;
string input;
string output ;
int check = 1;
while (check){
cout << "Enter in one or more words to be output in ROT13: " << endl;
cin >> input;
while(my issue is here){
const char *word = input.c_str();
for (int i = 0; i < input.length(); i++){
b = (int)word[i];
if (b > 96){
if (b >= 110){
b = b - 13;
}
else {
b = b + 13;
}
output += ((char)b);
}
else
{
if (b >= 78){
b = b - 13;
}
else {
b = b + 13;
}
output += ((char)b);
}
}
cout << output << endl;
output = "";
cin >> input;
}
check = 0;
}
return 0;
}
如果没有更多的输入行,cin 函数将 return 为假。您可以执行以下操作以读取直到输入结束,或者如果您要重定向 cin 以从文件读取,则为 eof。
int a;
while(cin >> a){
//Your loop body
}
您可以用这一行替换整个 while 循环:
std::getline(std::cin, input); // where input is a std::string
然后在这一行之后重新格式化。
我的 C++ 程序有问题。我重新格式化并显示用户在控制台中输入的单词。如果用户输入: Hi I am bob.The 用户将在控制台输入 bob 后按回车键。我将重新格式化并以新格式重新打印它。问题是在输入该控制台行上的所有单词之前,我不想显示更多输入的消息。我的当前循环要么在每个单词后显示输入请求,要么根本不显示。这取决于我是否包含提示。我需要让一个 while 循环处理每个单词并输出它并在最后一个单词后停止。什么是布尔参数?我包含我的代码以供参考。
int _tmain(int argc, _TCHAR* argv[])
{
int b;
string input;
string output ;
int check = 1;
while (check){
cout << "Enter in one or more words to be output in ROT13: " << endl;
cin >> input;
while(my issue is here){
const char *word = input.c_str();
for (int i = 0; i < input.length(); i++){
b = (int)word[i];
if (b > 96){
if (b >= 110){
b = b - 13;
}
else {
b = b + 13;
}
output += ((char)b);
}
else
{
if (b >= 78){
b = b - 13;
}
else {
b = b + 13;
}
output += ((char)b);
}
}
cout << output << endl;
output = "";
cin >> input;
}
check = 0;
}
return 0;
}
如果没有更多的输入行,cin 函数将 return 为假。您可以执行以下操作以读取直到输入结束,或者如果您要重定向 cin 以从文件读取,则为 eof。
int a;
while(cin >> a){
//Your loop body
}
您可以用这一行替换整个 while 循环:
std::getline(std::cin, input); // where input is a std::string
然后在这一行之后重新格式化。