繁体   English   中英

(cin >> int).get()在Xcode中没有正常工作(4.3.3)

[英](cin >> int).get() doesn't properly work in Xcode(4.3.3)

我目前正在编写“C ++ Primer Plus”一书并完成一些编程练习。 看起来,我遇到了Xcode(4.3.3)的问题,因为下面的代码无法正常工作:

  #include <iostream>
    #include <string>

    struct car 
    {
        std::string maker;
        int year;
    };



int main() 
{
    using namespace std;

    cout << "How many cars do you wish to catalog? ";
    int nCars;
    (cin >> nCars).get();

    car* aCars = new car[nCars];

    for (int i = 0; i < nCars; i++) 
    {
        cout << "\nCar #" << (i + 1) << endl;
        cout << "Please enter the make: ";
        getline (cin, (aCars + i)->maker);
        cout << "\nPlease enter the year made: ";
        (cin >> (aCars + i)->year).get();
    }
    cout << "Here is your collection: \n";

    for (int i = 0; i < nCars; i++)
    {
        cout << (aCars + i)->year << " " << (aCars + i)->maker << endl;
    }

    delete [] aCars;
    return 0;
}

问题是,我没有机会进入任何制造商。 该程序直接进入我必须输入年份的点,即使我正在使用“(cin >> nCars).get();” 摆脱换行符。

我忽略了什么吗?

提前致谢!

我怀疑你可能在Windows上运行,并且双字节换行符正在打击你。 你可以用ignore来改进(对于那些不长得多的行):

cin >> nCars;
cin.ignore(1024, '\n');

请注意,由于您依赖于流数字处理,因此输入非数字年份(例如QQ将导致编程刚刚完成而无需再请求输入。

您不需要对这些年份进行数学运算,因此将它们视为字符串而不是整数。 然后,如果您需要,您可以在获得输入后每年进行验证。

伙计们......我发现了问题。 使用cin.get()时,Xcode中的控制台无法正常工作。 我在终端以及Visual Studio(Win 7)中尝试了相同的代码,程序运行良好。

无论如何,谢谢大家的建议。 我会在下次尝试考虑它们。 :)

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM