Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;getline和if/else if语句未按预期工作 我最近开始学习C++。我写了这个程序,它根据用户输入输出数字。在我要求用户输入整数以确定输出之前,我发现我可以使用getline从用户那里获取字符串。我的问题是,现在无论用户输入什么,当程序应该输出其他东西时,它总是输出26.2。我如何使只输入“apple”输出26.2,只输入“orange”输出12.9,只输入“kiwi”输出62.6,等等 #include <iostream> #include <string> using namespace std; struct fruit { float apple; float orange; float kiwi; float tangerine; float grape; int banana; }; int main() { string apple, orange, kiwi, tangerine, grape, banana; fruit percentage; fruit *ptr; percentage.apple = 26.2; percentage.orange = 12.9; percentage.kiwi = 62.6; percentage.tangerine = 18.3; percentage.grape = 41.8; percentage.banana = 13; ptr = &percentage; cout<<"Information from the USA in 2004.\n1. apple 2. orange 3. kiwi 4. tangerine 5. grape 6. banana\n"; if ( getline ( cin, apple ) ) { cout<< ptr->apple; cin.get(); } else if ( getline ( cin, orange ) ) { cout<< ptr->orange; cin.get(); } else if ( getline ( cin, kiwi ) ) { cout<< ptr->kiwi; cin.get(); } else if ( getline ( cin, tangerine ) ) { cout<< ptr->tangerine; cin.get(); } else if ( getline ( cin, grape ) ) { cout<< ptr->grape; cin.get(); } else if ( getline ( cin, banana ) ) { cout<< ptr->banana; cin.get(); } else { cout<<"Error, invalid input."; cin.get(); } } #包括 #包括 使用名称空间std; 结构果{ 苹果; 浮橙; 漂浮猕猴桃; 浮橘; 漂浮葡萄; 香蕉; }; int main() { 串苹果、桔子、猕猴桃、橘子、葡萄、香蕉; 果率; 水果*ptr; 苹果的百分比=26.2; 百分比:橙色=12.9; 猕猴桃的百分比=62.6; 橘子的百分比=18.3; 葡萄百分比=41.8; 百分比=13; ptr=&百分比; cout_C++_String_Pointers_Getline_If Statement - Fatal编程技术网

C++;getline和if/else if语句未按预期工作 我最近开始学习C++。我写了这个程序,它根据用户输入输出数字。在我要求用户输入整数以确定输出之前,我发现我可以使用getline从用户那里获取字符串。我的问题是,现在无论用户输入什么,当程序应该输出其他东西时,它总是输出26.2。我如何使只输入“apple”输出26.2,只输入“orange”输出12.9,只输入“kiwi”输出62.6,等等 #include <iostream> #include <string> using namespace std; struct fruit { float apple; float orange; float kiwi; float tangerine; float grape; int banana; }; int main() { string apple, orange, kiwi, tangerine, grape, banana; fruit percentage; fruit *ptr; percentage.apple = 26.2; percentage.orange = 12.9; percentage.kiwi = 62.6; percentage.tangerine = 18.3; percentage.grape = 41.8; percentage.banana = 13; ptr = &percentage; cout<<"Information from the USA in 2004.\n1. apple 2. orange 3. kiwi 4. tangerine 5. grape 6. banana\n"; if ( getline ( cin, apple ) ) { cout<< ptr->apple; cin.get(); } else if ( getline ( cin, orange ) ) { cout<< ptr->orange; cin.get(); } else if ( getline ( cin, kiwi ) ) { cout<< ptr->kiwi; cin.get(); } else if ( getline ( cin, tangerine ) ) { cout<< ptr->tangerine; cin.get(); } else if ( getline ( cin, grape ) ) { cout<< ptr->grape; cin.get(); } else if ( getline ( cin, banana ) ) { cout<< ptr->banana; cin.get(); } else { cout<<"Error, invalid input."; cin.get(); } } #包括 #包括 使用名称空间std; 结构果{ 苹果; 浮橙; 漂浮猕猴桃; 浮橘; 漂浮葡萄; 香蕉; }; int main() { 串苹果、桔子、猕猴桃、橘子、葡萄、香蕉; 果率; 水果*ptr; 苹果的百分比=26.2; 百分比:橙色=12.9; 猕猴桃的百分比=62.6; 橘子的百分比=18.3; 葡萄百分比=41.8; 百分比=13; ptr=&百分比; cout

C++;getline和if/else if语句未按预期工作 我最近开始学习C++。我写了这个程序,它根据用户输入输出数字。在我要求用户输入整数以确定输出之前,我发现我可以使用getline从用户那里获取字符串。我的问题是,现在无论用户输入什么,当程序应该输出其他东西时,它总是输出26.2。我如何使只输入“apple”输出26.2,只输入“orange”输出12.9,只输入“kiwi”输出62.6,等等 #include <iostream> #include <string> using namespace std; struct fruit { float apple; float orange; float kiwi; float tangerine; float grape; int banana; }; int main() { string apple, orange, kiwi, tangerine, grape, banana; fruit percentage; fruit *ptr; percentage.apple = 26.2; percentage.orange = 12.9; percentage.kiwi = 62.6; percentage.tangerine = 18.3; percentage.grape = 41.8; percentage.banana = 13; ptr = &percentage; cout<<"Information from the USA in 2004.\n1. apple 2. orange 3. kiwi 4. tangerine 5. grape 6. banana\n"; if ( getline ( cin, apple ) ) { cout<< ptr->apple; cin.get(); } else if ( getline ( cin, orange ) ) { cout<< ptr->orange; cin.get(); } else if ( getline ( cin, kiwi ) ) { cout<< ptr->kiwi; cin.get(); } else if ( getline ( cin, tangerine ) ) { cout<< ptr->tangerine; cin.get(); } else if ( getline ( cin, grape ) ) { cout<< ptr->grape; cin.get(); } else if ( getline ( cin, banana ) ) { cout<< ptr->banana; cin.get(); } else { cout<<"Error, invalid input."; cin.get(); } } #包括 #包括 使用名称空间std; 结构果{ 苹果; 浮橙; 漂浮猕猴桃; 浮橘; 漂浮葡萄; 香蕉; }; int main() { 串苹果、桔子、猕猴桃、橘子、葡萄、香蕉; 果率; 水果*ptr; 苹果的百分比=26.2; 百分比:橙色=12.9; 猕猴桃的百分比=62.6; 橘子的百分比=18.3; 葡萄百分比=41.8; 百分比=13; ptr=&百分比; cout,c++,string,pointers,getline,if-statement,C++,String,Pointers,Getline,If Statement,您永远不会进行比较。您的if语句只会说if(getline(…)。getline()函数获取一个流和一个结果字符串,然后再次返回流。以您的第一行为例: if ( getline ( cin, apple ) ) { string in; getline(cin, in); getline(cin,apple)将从cin获取下一行(用户输入)然后将其复制到字符串apple。然后它将返回cin。由于cin现在是if语句中的返回值,if语句将检查它是否为真。显然,cin两者都不是,但系统将其解释为

您永远不会进行比较。您的if语句只会说
if(getline(…)
getline()
函数获取一个流和一个结果字符串,然后再次返回流。以您的第一行为例:

if ( getline ( cin, apple ) ) {
string in;
getline(cin, in);
getline(cin,apple)
将从
cin
获取下一行(用户输入)然后将其复制到字符串
apple
。然后它将返回
cin
。由于
cin
现在是if语句中的返回值,if语句将检查它是否为真。显然,
cin
两者都不是,但系统将其解释为真,并始终执行第一条语句

现在,关于如何修复此问题,您需要在程序开始时获取一次输入,例如:

if ( getline ( cin, apple ) ) {
string in;
getline(cin, in);
然后比较if语句中的变量

if (in == "apple") {
    // Do stuff for apples
} else if (in == "orange") {
    // Do stuff for oranges
} // etc

这解决了问题。谢谢!