无法读取由空格分隔的两个字符串

时间:2010-07-14 18:16:35

标签: c++

我试图用空格分隔两个字符串。

CIN>>一种; CIN>> B;

这应该在技术上有效。我也使用了getline,但似乎没有用。 它读入了一些输入并被卡在其他输入上

编辑:添加了C ++标记,保留了C标记,因为它是原始帖子的一部分。

2 个答案:

答案 0 :(得分:4)

这:

#include <iostream>
#include <sstream>

int main()
{
    std::istringstream iss("wrgl zrgl");
    std::string s1, s2;
    iss >> s1 >> s2;
    std::cout << '"' << s1 << "\" \"" << s2 << "\"\n";
    return 0;
}

在我的机器上编译,运行和打印"wrgl" "zrgl"

答案 1 :(得分:0)

  

我也使用过getline但它似乎没有用。它读入了一些输入并被卡在其他输入上

我想回答这一部分。 cin是否输入密钥进行第二次输入?

您可以尝试以下方式

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{

    cout << "Enter name1 :";
    string name1;
    getline(std::cin, name1);


    cout << "Enter name2 :";
    string name2;
    getline(std::cin, name2);

    if (name2.empty()) getline(std::cin, name2);

    cout << endl << "Input Name1  :" << name1 << endl << "Input Name2 :" << name2;

     return 0;
}

或者您可以使用 endl 来刷新流

void GettingTwoStrings2()
{
    cout << "Enter name1 :" << endl;
    string name1;
    getline(std::cin, name1);


    cout << "Enter name2 :" << endl;
    string name2;
    getline(std::cin, name2);

    cout << endl << "Input Name1  :" << name1 << endl << "Input Name2 :" << name2 << endl;;
}