2

在 C 中,假设我需要从字符串中获取输入

 int num,cost;
 char *name[10];
 printf("Enter your  inputs [quantity item_of_name at cost]");
 scanf("%d%*c%s%*c%*s%*c%d",&num,name[0],&cost);

 printf("quantity of item: %d",num);
 printf("the cost of item is: %d",cost);
 printf("the name of item is: %d",name[0]);

输入

12点出书

输出

商品数量:1

商品价格:12

物品名称:书

现在我想在 C++ 中做同样的事情。我不知道如何接近。gets() 返回整个字符串。是否有我遗漏的特定函数?请帮忙。

4

4 回答 4

6
int num,cost;
std::string name;
std::cout << "Enter your  inputs [quantity item_of_name at cost]: ";
if (std::cin >> num >> name >> cost)
{ } else 
{ /* error */ }

您将要添加错误处理

于 2012-10-12T10:58:31.460 回答
0

在 C++ 中,您应该使用cin,coutstring来自标准库。

于 2012-10-12T10:59:05.873 回答
0

您可以使用 iostream 的 cin。

int num,cost;
 char *name[10];
 std::cout <<"Enter your quantity"<<std::endl;
 std::cin>> num;
 std::cout<<" Enter the cost"<<std::endl;
 std::cin>>cost;
 std::cout<<"Enter the name"<<std::endl;

 std::cout<<"The quantity of the item is: "<<num<<" costing: "<<cost<<" for "<<name[0]<<std::endl;

然后当然你也可以使用 std::string 代替 char*。

或者将cin的精简为cin >> num >> cost >> name;

此外,正如Griwes 所指出的,您需要对结果执行错误检查。

于 2012-10-12T10:59:16.613 回答
0

在 c++ 中,std::stream通过操作符提供与用户的读写通信>>

您的代码转换为

int num,cost;
std::string name;

std::cout << "Enter your  inputs [quantity item_of_name at cost]" << std::flush;
std::cin >> num >> name;
std::cin >> at; // skip the at word
std::cin >> cost;

std::cout << "quantity of item: " << num << std::endl;
std::cout << "the cost of item is: " << cost << std::endl;
std::cout << "the name of item is: " << name << std::endl;
于 2012-10-12T11:01:23.283 回答