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