c++ 为什么我必须输入2次才能使代码工作?

zte4gxcn  于 2023-04-13  发布在  其他
关注(0)|答案(2)|浏览(182)

我写了一个简单的C++程序:

#include <iostream>
using namespace std;

int main()
{
    string nama = "";
    string jawabsalah = "";

    cout << "Hai, siapa nama kamu?: " << endl;
    cin >> nama;

    cout << "hallo " << nama << "! apa kabar kamu hari ini? " << endl;
    cout << "Baik atau buruk?: " << endl;

    string mood_hari_ini = "";
    cin >> mood_hari_ini;

    if (mood_hari_ini == "buruk") {
        cout << "Aduhh kasian kamu, yang sabar yaa.. :c " << endl;
    }
    if (mood_hari_ini == "baik") {
        cout << "wahhh syukurlahhh.. ^^ " << endl;
    }

    cin >> jawabsalah;
    if (jawabsalah == jawabsalah) {
        cout << "Kok malah jawab " << jawabsalah << "? kan aku nanya nya baik apa burukk >< " << endl;
    }

    return 0;
}

但似乎我必须输入2个输出才能让代码工作,也就是这一部分:

cin >> jawabsalah;
    if(jawabsalah == jawabsalah){
        cout << "Kok malah jawab " << jawabsalah << "? kan aku nanya nya baik apa burukk >< " <<         
     endl;

我知道这是在印度尼西亚,但可以请人帮助。

guz6ccqo

guz6ccqo1#

paddy所述:
使用std::getline而不是使用格式化的字符串输入很可能是可以修复的。通常,您希望使用行尾来分隔输入,而不是任何空格字符。
您可能需要输入2次的原因是因为您在输入中放置了一个空格,并且您不应该在cin中使用它。
在这种情况下,你会想做一些类似的事情:

getline(cin, nama);

它看起来也不像你在这部分之前要求提示:

// cout << "?????"
cin >> jawabsalah;

正如一些人所指出的,你可能不需要if语句,因为它总是true,试着与不同的东西进行比较:

if (jawabsalah == "example") {
    cout << "Kok malah jawab " << jawabsalah << "? kan aku nanya nya baik apa burukk >< " << endl;
}
pgx2nnw8

pgx2nnw82#

cin >> jawabsalah;读取一个字符串,所以当然需要输入第二个字符串。
(And jawabsalah == jawabsalah始终为真。)
基于一些快速的在线翻译,我猜如果mood_hari_ini既不是"buruk"也不是"baik",那么您需要最后的输出(“我问它是好还是坏”)。
使用带有条件的else分支来完成此操作:

if (mood_hari_ini == "buruk") {
    cout << "Aduhh kasian kamu, yang sabar yaa.. :c " << endl;
}
else if (mood_hari_ini == "baik") {
    cout << "wahhh syukurlahhh.. ^^ " << endl;
}
else {
    cout << "Kok malah jawab " << mood_hari_ini << "? kan aku nanya nya baik apa burukk << " << endl;
}

相关问题