C++ C++;for循环获取用户输入并将其输入字符串数组

C++ C++;for循环获取用户输入并将其输入字符串数组,c++,C++,如果我在饮料名称中使用空格,我将两个“输入饮料名称:”放在一起,有人能帮我吗 string beverages[5]; for (int i = 0; i < 5; i++) { cout << "Enter beverages name: "; cin >> beverages[i]; } string饮料[5]; 对于(int i=0;i>(istream,string)(在[i]中的那一个)将从流中读取字符串,直到它到达一个空白字符,

如果我在饮料名称中使用空格,我将两个“输入饮料名称:”放在一起,有人能帮我吗

string beverages[5];
for (int i = 0; i < 5; i++)
{
    cout << "Enter beverages name: ";
    cin >> beverages[i];

}   
string饮料[5];
对于(int i=0;i<5;i++)
{
饮料;
}   

您正在
for
循环中获取输入。循环运行5次,在每次迭代中,它都要求使用
std::string
std::string
输入被
newline
终止。在这些程序中,
std::string
输入不能用
空格分隔

因此,基本上,输入输出如下所示:

Enter beverages name: cola
Enter beverages name: sprite
Enter beverages name: pepsi
Enter beverages name: water
Enter beverages name: alcohol
cola
sprite
pepsi
water
alcohol
例如,您不能输入:
coca-cola

如果您想在
饮料
名称之间使用
空格
,可以使用
std::getline()
函数

#include <iostream>
#include <string>

using std::string;
using std::cin;
using std::cout;

int main(int argc, char const *argv[])
{
    string beverages[5];
    for (int i = 0; i < 5; i++){
        cout << "Enter beverages name: ";
        std::getline(cin, beverages[i]);
    }

    for(const string &beverage : beverages){
        cout << beverage << '\n';
    }

    return 0;
}
现在,如果您想在一行中输入,所有饮料用
空格隔开,那么您可以执行以下操作:

#include <iostream>
#include <sstream>
#include <string>

using std::string;
using std::cin;
using std::cout;

int main(int argc, char const *argv[])
{
    string beverages[5];

    string allBeveragesInOneLine;

    cout << "Enter beverages name: ";
    std::getline(cin, allBeveragesInOneLine);

    std::stringstream ss(allBeveragesInOneLine);
    string individualBeverage;

    for(int i = 0 ; ss >> individualBeverage && i < 5 ; ++i){
        beverages[i] = individualBeverage;
    }

    for(const string &beverage : beverages){
        cout << beverage << '\n';
    }

    return 0;
}
同样,您不能在此处输入可口可乐。由于饮料之间用
空格隔开
,因此无法判断
可口可乐
是否为单一饮料。它会把它算作两种饮料,
可口可乐
可乐

如果您想在一行中输入,其中每个输入可以有多个
空白
,那么您可以通过
或任何其他标记将它们与其他输入区分开

#include <iostream>
#include <sstream>
#include <string>

using std::string;
using std::cin;
using std::cout;

int main(int argc, char const *argv[])
{
    string beverages[5];

    string allBeveragesInOneLineWithUnderscores;

    cout << "Enter beverages name: ";
    std::getline(cin, allBeveragesInOneLineWithUnderscores);

    std::stringstream ss(allBeveragesInOneLineWithUnderscores);
    string individualBeverageNamesWithUnderScores; 

    for(int i = 0 ; ss >> individualBeverageNamesWithUnderScores && i < 5 ; ++i){
        beverages[i] = individualBeverageNamesWithUnderScores;
    }

    for(string &beverageNameWithUnderScores : beverages){
        for(char &c : beverageNameWithUnderScores){
            if(c == '_') c = ' ';
        }
    }

    for(const string &beverageNamesWithUnderscoresRemove : beverages){
        cout << beverageNamesWithUnderscoresRemove << '\n';
    }

    return 0;
}
使用getline()读取字符串。注意,
operator>>(istream,string)
(在[i]
中的那一个)将从流中读取字符串,直到它到达一个空白字符,例如一个空格(留在流中)。在下一次读取开始之前,通常会自动跳过流开始时留下的任何空白。
Enter beverages name: cola pepsi sevenup sprite water
cola
pepsi
sevenup
sprite
water
#include <iostream>
#include <sstream>
#include <string>

using std::string;
using std::cin;
using std::cout;

int main(int argc, char const *argv[])
{
    string beverages[5];

    string allBeveragesInOneLineWithUnderscores;

    cout << "Enter beverages name: ";
    std::getline(cin, allBeveragesInOneLineWithUnderscores);

    std::stringstream ss(allBeveragesInOneLineWithUnderscores);
    string individualBeverageNamesWithUnderScores; 

    for(int i = 0 ; ss >> individualBeverageNamesWithUnderScores && i < 5 ; ++i){
        beverages[i] = individualBeverageNamesWithUnderScores;
    }

    for(string &beverageNameWithUnderScores : beverages){
        for(char &c : beverageNameWithUnderScores){
            if(c == '_') c = ' ';
        }
    }

    for(const string &beverageNamesWithUnderscoresRemove : beverages){
        cout << beverageNamesWithUnderscoresRemove << '\n';
    }

    return 0;
}
Enter beverages name: coca_cola pepsi seven_up water sprite
coca cola
pepsi
seven up
water
sprite