如何在C++中输入逗号分隔的字符串

如何在C++中输入逗号分隔的字符串

给定一个以逗号而不是空格分隔的输入字符串,任务是在C++中解析此输入字符串。

首先,让我们了解如果输入字符串是以逗号分隔会产生什么不同。

输入一个由空格分隔的字符串
在C++中输入由空格分隔的字符串非常容易。进行此操作的程序是:

#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    string str;
 
    // 获取字符串
    getline(cin, str);
 
    // 打印单词
    cout << str;
}  
C++

输入:

1 2 3 4 5 6
C++

输出:

1
2
3
4
5
6
C++

为什么我们不能使用上面的代码来处理逗号分隔的输入字符串?
上述代码适用于使用空格分隔的输入字符串,但是对于使用逗号分隔的输入字符串,它将无法按预期工作,因为程序将把完整的输入视为一个单词在字符串中。

输入:

1, 2, 3, 4, 5, 6
C++

输出:

1, 2, 3, 4, 5, 6
C++

如何输入逗号分隔的字符串?
现在为了输入逗号分隔的字符串,可以使用以下方法:

  1. 在stringstream中获取要输入的字符串
  2. 逐个从流中获取字符串的每个字符
  3. 检查这个字符是否是逗号(“,”)。
  4. 如果是,则忽略该字符。
  5. 否则,将此字符插入存储单词的向量中。

下面是上述方法的实现:

// C++ program to input
// a comma separated string
 
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    // 获取字符串
    string str = "11,21,31,41,51,61";
 
    vector<int> v;
 
    // 在stringstream中获取要输入的字符串
    stringstream ss(str);
 
    // 解析字符串
    for (int i; ss >> i;) {
        v.push_back(i);
        if (ss.peek() == ',')
            ss.ignore();
    }
 
    // 打印单词
    for (size_t i = 0; i < v.size(); i++)
        cout << v[i] << endl;
}  
C++

输出:

11
21
31
41
51
61
C++

时间复杂度: O(N).

辅助空间: O(N).

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册