Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将不同的变量分配给cin C++;_C++_String_Cin - Fatal编程技术网

C++ 将不同的变量分配给cin C++;

C++ 将不同的变量分配给cin C++;,c++,string,cin,C++,String,Cin,在我的实验室里,我试图处理一条代表地球上一个目的地的线。这方面的一个例子是 “加利福尼亚大道东200号北152号” 在我教授的笔记中,他说如果你这样做 std::cin >> latitude >> latitudeDirection >> longitude >> longitudeDirection >> address 一直到加利福尼亚,从那里开始,字符串在每个空白处一次消耗一个。我如何使它,以便我消费其余的输入?下面是我的变量

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

“加利福尼亚大道东200号北152号”

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

std::cin >> latitude >> latitudeDirection >> longitude >> longitudeDirection >> address
一直到加利福尼亚,从那里开始,字符串在每个空白处一次消耗一个。我如何使它,以便我消费其余的输入?下面是我的变量在赋值时的外观

latitude = 152
latitudeDirection = "/N"
longitude = 200
longitudeDirection = "/E"
address = "California"
地址仅在我希望它包含“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;
        */
    }
int-numberOfLocations;
标准::cin>>位置数量;
std::cin.ignore();
对于(int x=0;x>纬度>>纬度方向>>经度>>纵向方向>>地址;

std::cout普通的
>
as输入运算符将输入拆分为由空格分隔的“单词”

为了避免这一点,考虑每行输入一个项目。您可以使用<代码> STD::GETLION <代码> >从代码> <代码>读取一行。在这里您需要一个数字,您可以用“<代码> STD::STOI”来解析该行。

如果您别无选择,只能处理包含多个输入项的字符串,其中最后有可以包含空格的文本数据,那么您可以使用来读取文本之前的项


示例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;
}
#包括
#包括//退出,退出\失败
#include//std::string
使用名称空间std;
无效错误(字符串常量(&s)
{

cerr这里的问题是,您试图输入带有空格的字符串,因此,由于通过cin的输入由空格“”分隔,因此必须使用std::getline,这将使输入delimeter的结尾成为换行符。 实施示例:

#include <iostream>
using namespace std;
int main()
{
    string s;
    getline(cin,s);
    cout<<s;
    return 0;
}
#包括
使用名称空间std;
int main()
{
字符串s;
getline(cin,s),;

coutCheck我必须通过一个循环来获得每个值吗?@Xari:我将添加一个示例。哦,我还将添加一点。从我在代码中看到的情况来看,到目前为止,您有多个getlines。问题是我必须一次读取一行输入,其中包括我上面列出的所有信息。这就是我的专业问题变得复杂了:/不幸的是,我还想将字符串拆分为变量类型的double和int,同时消耗字符串的其余部分。有没有一种方便的方法可以做到这一点?同样,必须有某种符号或其他字符串,根据它们来拆分字符串,因此这些符号成为用于拆分的分隔符,通过find函数和use substr函数查找delimeter。string s=“scott>=tiger”;string delimiter=“>=”string token=s.substr(0,s.find(delimiter));//输出:scottlet在上面的注释s=“123>=tiger”中说的话,拆分后您将获得token=“123”然后通过int x=int(标记)将其类型转换为整数或浮点
#include <iostream>
using namespace std;
int main()
{
    string s;
    getline(cin,s);
    cout<<s;
    return 0;
}