当我尝试输入时,我的代码结果为0

my code results 0 when i attempt to enter input

本文关键字:代码 我的 结果 输入      更新时间:2023-10-16
//============================================================================
// Name        : Lab02.cpp
// Author      : Insert name
// Version     :
// Copyright   : 
// Description : Hello World in C++, Ansi-style
//============================================================================
/*
 * Write a program that displays
 * First and last name on one line
 * Address on the nest line
 * writes your city, state, zip on next line
 * writes telephone number on the next line
 *
 * Example: First Last
 *          123 Street Avenue
 *          City, Ca. Zipcode
 *          (925)555-5555
 */
#include <iostream>
#include <string>
using namespace std;
int main() {
    long double fullName;
    unsigned int address;
    string cityZip;
    unsigned int phoneNumber;
    cout << "Please enter you full name" << endl;
    cin >> fullName;
    cout << fullName << endl;
    cout << "Enter your address" << endl;
    cin >> address;
    cout << address << endl;
    cout << "Please enter your city, zipzode, and state" << endl;
    cin >> cityZip;
    cout << cityZip << endl;
    cout << "Enter your phone number" << endl;
    cin >> phoneNumber;
    cout << phoneNumber << endl;

    return 0;
}

这是控制台输出

Please enter you full name
first last
0
Enter your address
0
Please enter your city, zipzode, and state
Enter your phone number
0

我的代码一直输出0,不让我完成代码提示的输入。有人能告诉我我做错了什么吗?我应该使用GetLine而不是字符串吗

long double fullName;
cout << "Please enter you full name" << endl;
cin >> fullName;

long double是一个数值。您正在提示输入一个数值。在这里,您可以非常努力地输入一个名称,但由于该值是long double,因此显然不起作用。

输入解析失败将使std::cin处于失败状态,随后的所有输入操作都将立即失败,从而导致您观察到的输出。

结论:

  1. 修复所有变量的类型。它们应该是std::string s。

  2. 使用std::getline()输入一行文本。operator>>解析单个以空格分隔的作品。您在这里的意图是,在每个提示下,读取整行文本,可能包含空格。operator>>将在第一个空格处停止读取。

相关文章: