gpt4 book ai didi

c++ - 将不同的变量分配给来自 cin C++ 的输入

转载 作者:行者123 更新时间:2023-11-30 03:48:32 24 4
gpt4 key购买 nike

在我的实验室中,我正在尝试处理一条代表地球上目的地的线。这方面的一个例子是......

“加利福尼亚大道 152/N 200/E”

在我教授的笔记中,他说如果你这样做......

std::cin >> latitude >> latitudeDirection >> longitude >> longitudeDirection >> address

一直消耗到加利福尼亚,从那里开始,字符串在每个空白处一次消耗一个。我该怎么做才能消耗其余的输入?这是我的变量在分配时的样子......

latitude = 152
latitudeDirection = "/N"
longitude = 200
longitudeDirection = "/E"
address = "California"

address 只在我希望它包含“California Ave”时包含“California”。这是我到目前为止的代码。

int numberOfLocations;
std::cin >> numberOfLocations;
std::cin.ignore();
for (int x = 0; x < numberOfLocations; x++) {
double longitude, latitude;
std::string longitudeDirection, latitudeDirection, address;

/*
std::cin >> latitude >> latitudeDirection >> longitude >> longitudeDirection >> address;
std::cout << latitude << latitudeDirection << latitude << latitudeDirection << address << std::endl;
*/
}

最佳答案

普通>>作为输入运算符将输入拆分为由空格分隔的“单词”。

为避免这种情况,请考虑每行输入读取一个项目。您可以使用 std::getline来自 <string>阅读一行。在需要数字的地方,您可以使用例如解析该行std::stoi .

如果您别无选择,只能处理包含多项输入的字符串,而最后是可以包含空格的文本数据,那么您可以使用 std::istringstream 阅读正文前的项目。


示例 1 – 每行读取一个项目:

#include <iostream>
#include <stdlib.h> // exit, EXIT_FAILURE
#include <string> // std::string
using namespace std;

void error( string const& s )
{
cerr << "!" << s << endl;
exit( EXIT_FAILURE );
}

auto get_input_line()
-> string
{
string line;
getline( cin, line );
if( cin.fail() ) { error( "Uh oh, ..." ); }
return line;
}

auto main() -> int
{
cout << "This program adds two numbers A and B." << endl;
cout << "Number A, please? ";
double const a = stod( get_input_line() );
cout << "Number B, please? ";
double const b = stod( get_input_line() );
cout << a << " + " << b << " = " << a + b << "." << endl;
}

示例 2 – 解析一行文本
(恕我直言不聪明,但也许是一个要求)

#include <iostream>
#include <stdlib.h> // exit, EXIT_FAILURE
#include <string> // std::string
#include <sstream> // std::istrstream
using namespace std;

void error( string const& s )
{
cerr << "!" << s << endl;
exit( EXIT_FAILURE );
}

auto main() -> int
{
string const data = "152/N 200/E California Ave";

cout << "This program parses the line '" << data << "'." << endl;
cout << endl;
cout << "Result:" << endl;

istringstream stream( data );
char dummy_char;
int latitude;
char latitudeDirection;
int longitude;
char longitudeDirection;
string address;

stream
>> latitude >> dummy_char >> latitudeDirection
>> longitude >> dummy_char >> longitudeDirection;
if( stream.fail() ) { error( "Initial items extraction failed." ); }
while( stream.peek() == ' ' ) { stream.get(); }
getline( stream, address );

cout << "> "
<< latitude << "/" << latitudeDirection << " "
<< longitude << "/" << longitudeDirection << " "
<< "'" << address << "'"
<< "<" << endl;
}

关于c++ - 将不同的变量分配给来自 cin C++ 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33160702/

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