【问题标题】:C++ How to Split a User Input String Into Multiple StringsC ++如何将用户输入字符串拆分为多个字符串
【发布时间】:2017-07-19 21:34:44
【问题描述】:

我正在尝试获取用户输入:“aa bb cc dd ee”等存储在单个字符串中并将其放入多个字符串中 string_1“aa”,string_2“bb”,string_3“cc”,string_4“ dd"、string_5 "ee" 等

string str;
cin >> str; //user input

//code to split the string

string str_1, str_2, str_3, str_4, str_5;

【问题讨论】:

  • cin >> str; 将只接收您输入的第一个单词。
  • 你试过cin >> str_1 >> str_2 >> str_3 >> str_4 >> str_5;吗?

标签: c++ string split user-input


【解决方案1】:
#include <stringstream>

int main()
{
    std::string MasterString = "Super cali\nfragelistic \n expialadogis\n then more words\n hello world";
    std::stringstream iss(MasterString);

    while(iss.good())
    {
        std::string SingleLine;
        getline(iss,SingleLine,'\n');
        // Process SingleLine here
    }
}

类似的东西。

【讨论】:

    【解决方案2】:

    std::istream&amp; operator&gt;&gt;(std::istream&amp;, std::string) 已经为您完成了拆分。输入与空格分开。

    这么写

    std::string str_1, str_2, str_3, str_4, str_5;
    std::cin >> str_1 >> str_2 >> str_3 >> str_4 >> str_5;
    

    会做你想做的事。


    如果您确实需要将输入存储在第一个字符串中,则应使用std::getline() 函数:

    std::string str;
    std::getline(std::cin,str);
    

    并使用std::istringstream 拆分各个值:

    std::istringstream iss(str);
    iss >> str_1 >> str_2 >> str_3 >> str_4 >> str_5;
    

    【讨论】:

    • 您好,如果使用第三种方法,有没有办法告诉编译器每个拆分字符串应该多长?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多