gpt4 book ai didi

C++ 从字符串中读取整行

转载 作者:行者123 更新时间:2023-11-28 02:02:21 25 4
gpt4 key购买 nike

我有一个大问题...只需运行程序并转到“New Gun”,然后转到“Handgun”。当您必须输入模型时,问题就来了。例如,如果我输入“Desert Eagle”,在文本文件中它只输出“Eagle”。很奇怪,我无法解决。

代码:

#include <fstream>
#include <iostream>
#include <windows.h>
#include <string>
#include <algorithm>
#include <sstream>
using namespace std;

void setcolor(unsigned short color)
{
HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hcon,color);
}

int main (){

system("chcp 1251 > nul");
system("title GunnZone");


string gunModel;
int gunManufactureYear;
int itemNumber;
double gunWeight;
double price;

ofstream myfileHandguns("Handguns.txt", ios::app);
ofstream myfileRifles("Rifles.txt", ios::app);
ofstream myfileShotguns("Shotguns.txt", ios::app);
ofstream myfileSnipers("Snipers.txt", ios::app);
ofstream myfileGranades("Granades.txt", ios::app);
ofstream myfileExplosives("Explosives.txt", ios::app);


int choice;
cout << "1.New Gun" << endl;
cout << "2.List Guns" << endl;
cout << "3.Exit" << endl << endl;
cout << "Enter your choice: ";
cin >> choice;

if(choice == 1){

system("cls");

int gunTypeChoice;
cout << "1.Handgun" << endl;
cout << "2.Rifle" << endl;
cout << "3.Shotgun" << endl;
cout << "4.Sniper" << endl;
cout << "5.Granade" << endl;
cout << "6.Explosives" << endl << endl;
cout << "Enter your choice: ";
cin >> gunTypeChoice;

if(gunTypeChoice == 1){

system("cls");

cout << "Model: ";
cin >> gunModel;
getline(cin, gunModel);
cout << endl << endl;

cout << "Year of Manufacture: ";
cin >> gunManufactureYear;
cout << endl << endl;

cout << "Weight: ";
cin >> gunWeight;
cout << endl << endl;

cout << "Item Number: ";
cin >> itemNumber;
cout << endl << endl;

cout << "Price: ";
cin >> price;


myfileHandguns << "Model: " << gunModel << "\n\n";
myfileHandguns << "Year of Manufacture: " << gunManufactureYear << "\n\n";
myfileHandguns << "Weight: " << gunWeight << " g" << "\n\n";
myfileHandguns << "Item Number: " << itemNumber << "\n\n";
myfileHandguns << "Price: " << price << "$" << "\n\n";
myfileHandguns.close();
}

}

system("pause > nul");
return 0;

最佳答案

按照建议删除 >>> 运算符。使用clearignore 清除错误跳过换行符\n

cout << "Model: ";
//cin >> gunModel;
std::cin.clear();
std::cin.ignore(0xffff, '\n');
std::getline(cin, gunModel);
cout << "Testing... you entered " << gunModel << endl;
cout << endl << endl;

另见 Why would we call cin.clear() and cin.ignore() after reading input?

关于C++ 从字符串中读取整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38958802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com