Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.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没有';I don’我没有按预期工作 #包括 #包括 使用名称空间std; int main() { 整数阶[5]; 字符串顺序[5]; int最小值=999999,其中; 弦康乃馨[5]; 浮果米[5]; 不能用肉身[我]; //getline(cin,carname[i]);不能这样做——为什么? cout>carprice[i]; cout_C++_Getline - Fatal编程技术网

C++ Getline没有';I don’我没有按预期工作 #包括 #包括 使用名称空间std; int main() { 整数阶[5]; 字符串顺序[5]; int最小值=999999,其中; 弦康乃馨[5]; 浮果米[5]; 不能用肉身[我]; //getline(cin,carname[i]);不能这样做——为什么? cout>carprice[i]; cout

C++ Getline没有';I don’我没有按预期工作 #包括 #包括 使用名称空间std; int main() { 整数阶[5]; 字符串顺序[5]; int最小值=999999,其中; 弦康乃馨[5]; 浮果米[5]; 不能用肉身[我]; //getline(cin,carname[i]);不能这样做——为什么? cout>carprice[i]; cout,c++,getline,C++,Getline,格式化输入,即使用运算符>>(),将跳过前导空格。此外,当接收到不符合格式的字符时,它将停止。例如,当读取浮点值时,输入将读取一个数字并在接收到第一个空格时停止。例如,它将在用于输入当前值的换行符之前停止 无格式输入,例如,使用std::getline(),不会跳过前导空格。相反,它将愉快地读取任何等待读取的字符。例如,如果下一个字符是换行符,std::getline()将愉快地停止读取 通常,当从格式化输入切换到非格式化输入时,您希望去掉一些空白。例如,您可以使用std::ws操纵器跳过所有前

格式化输入,即使用
运算符>>()
,将跳过前导空格。此外,当接收到不符合格式的字符时,它将停止。例如,当读取
浮点值时,输入将读取一个数字并在接收到第一个空格时停止。例如,它将在用于输入当前值的换行符之前停止

无格式输入,例如,使用
std::getline()
,不会跳过前导空格。相反,它将愉快地读取任何等待读取的字符。例如,如果下一个字符是换行符,
std::getline()
将愉快地停止读取

通常,当从格式化输入切换到非格式化输入时,您希望去掉一些空白。例如,您可以使用
std::ws
操纵器跳过所有前导空白:

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    int order[5];
    string carorder[5];
    int smallest=999999, where;
    string carname[5];
    float carprice[5];
    cout << "Enter car names then prices: ";
        cout << endl;
    for(int i=0; i < 5; i++){
        cin >> carname[i];
        //getline(cin, carname[i]);     can't do this -- why?
        cout << endl;
        cin >> carprice[i];
        cout << endl;
    }
    //BAD ALGORITHM//
       for(int m=0; m<5; m++){
    for(int j=0; j < 5; j++){

        if(carprice[j] < smallest){
            smallest = carprice[j];
            where = j;
        }

    }
    order[m] = smallest;
    carorder[m] = carname[where];
    carprice[where] = 999999;
    smallest = 999999;

   }
   //////////////////////////
    for(int w=0;  w<5; w++){
        cout << endl << "The car: " << carname[w] << " and price: " << order[w];
    }
    //////////////////////////
    return 0;
}
您的输入完全未经检查:在使用之前不检查结果通常是一个坏主意!您可能应该在某个点测试流状态,并可能将其恢复到良好状态,请求正确格式化的数据

std::getline(std::cin >> std::ws, carname[i]);